네이버지도 사용하기

2015. 10. 28. 10:2099. 정리전 - IT/29. IT 잡동지식

네이버 지도 키 발급

https://developer.naver.com/openapi/register.nhn


홈페이지에서 사용하기

<script type="text/javascript" src="http://openapi.map.naver.com/openapi/naverMap.naver?ver=2.0&key=18ac8040669d3142545233fdec219119"></script>


<!-- 네이버 지도 -->

<script type="text/javascript">

// 창크기 자동조절

var oMap;

var w = 0, h = 0;

w = $(window).width()  - 100;

h = $(window).height() - 250;

$(document).ready(function(){

$(window).resize(function() {

w = $(window).width()  - 100;

h = $(window).height() - 250;

oMap.setSize(new nhn.api.map.Size(w, h));

});

});

var oCenterPoint = new nhn.api.map.LatLng(37.5051646, 127.0525533);

var defaultLevel = 11;

oMap = new nhn.api.map.Map(document.getElementById('naverMap'),

{

point              : oCenterPoint,

zoom               : defaultLevel,

enableWheelZoom    : true,

enableDragPan      : true,

enableDblClickZoom : false,

mapMode            : 0,

activateTrafficMap : true,

activateBicycleMap : false,

minMaxLevel        : [ 1, 14 ],

size               : new nhn.api.map.Size(w, h)

});

// 축척도

var oSlider = new nhn.api.map.ZoomControl();

oMap.addControl(oSlider);

oSlider.setPosition({

top  : 40,

left : 5

});

// - 일반,위성

var oMapTypeBtn = new nhn.api.map.MapTypeBtn();

oMap.addControl(oMapTypeBtn);

oMapTypeBtn.setPosition({

bottom : 5,

right  : 5

});

// - 교통 범례 선언

var oTrafficGuide = new nhn.api.map.TrafficGuide();

oTrafficGuide.setPosition({

top   : 4,

right : 75

}); // - 교통 범례 위치 지정.

oMap.addControl(oTrafficGuide); // - 교통 범례를 지도에 추가.

// - 실시간 교통지도 버튼 선언

var trafficButton = new nhn.api.map.TrafficMapBtn(); 

trafficButton.setPosition({

top    : 5,

right  : 5

}); // - 실시간 교통지도 버튼 위치 지정

oMap.addControl(trafficButton);

var markerCount = 0;

// info

   var addressInfo = '<DIV style="padding:4px; border-top:1px solid; border-bottom:2px groove black; border-left:1px solid; border-right:2px groove black;margin-bottom:1px;color:black;background-color:white; width:auto; height:auto;">'

+ '<span style="color: #000000 !important;display: inline-block;font-size: 12px !important;font-weight: bold !important;letter-spacing: -1px !important;white-space: nowrap !important; padding: 2px 2px 2px 2px !important">'

+ "<font color='red'>Minigate</font><br />                                 "

+ "<font>본사</font><br />                                                  "

+ " <dl>                                                               "

+ " <dt style='color:gray'>주소 :</dt>                              "

+ " <dd>서울시 강남구 테헤란로 552 동광빌딩 (구, 비광빌딩) 53층</dd>      "

+ " </dl>                                                              "

+ " <dl>                                                               "

+ " <dt style='color:gray'>전화 :</dt>                              "

+ " <dd>02-3245-1343</dd>                                          "

+ " </dl>                                                              "

+ " <dl>                                                               "

+ " <dt style='color:gray'>FAX :</dt>                              "

+ " <dd>02-3534-1582</dd>                                          "

+ " </dl>                                                              "

+ " <dl>                                                               "

+ " <dt style='color:gray'>지하철 :</dt>                             "

+ " <dd>2호선 까치릉역 하차 1번출구 도보 400m (약 6분)</dd>                  "

+ " </dl>                                                              "

+ " <dl>                                                               "

+ " <dt style='float:none; width:100%; color:gray'>EMAIL US</dt>   "

+ " <dd style='float:none; width:100%;'>인사 : hr@minigate.net<br /> "

+ "                                         제휴/문의 : info@minigate.net</dd>"

+ " </dl><br />                                                         "

+ "<font>일본지사</font><br />                                                "

+ " <dl>                                                                "

+ " <dt style='color:gray'>주소 :</dt>                               "

+ " <dd>Shinkasumigaseki Bldg. 5F., 23-33-2, kasumigaseki, Chiyoda-ku, Tokyo, Japan</dd>"

+ " </dl>                                                               "

+ " <dl>                                                                "

+ " <dt style='color:gray'>전화 :</dt>                               "

+ " <dd>+81-3-3539-5365, 070-7285-3327</dd>                         "

+ " </dl>                                                               "

+ " <dl>                                                                "

+ " <dt style='color:gray'>FAX :</dt>                               "

+ " <dd>+81-3-3539-3336</dd>                                        "

+ " </dl>                                                               "

+ '<span></div>';


// - 지도위에 압정 포인트 찍기

var oSize = new nhn.api.map.Size(28, 37);

var oOffset = new nhn.api.map.Size(14, 37);

var oIcon = new nhn.api.map.Icon('http://static.naver.com/maps2/icons/pin_spot2.png', oSize, oOffset);

var tMarker = new nhn.api.map.Marker(oIcon, { title : 'DonzBox 본사' });

tMarker.setPoint(oCenterPoint);

oMap.addOverlay(tMarker);


// - infowindow 사용 시

var mapInfoTestWindow = new nhn.api.map.InfoWindow(); // - info window 생성

    mapInfoTestWindow.setVisible(false); // - infowindow 표시 여부 지정.

    oMap.addOverlay(mapInfoTestWindow);     // - 지도에 추가.     

    

    var oLabel = new nhn.api.map.MarkerLabel(); // - 마커 라벨 선언.

    oMap.addOverlay(oLabel); // - 마커 라벨 지도에 추가. 기본은 라벨이 보이지 않는 상태로 추가됨.


    mapInfoTestWindow.attach('changeVisible', function(oCustomEvent) {

            if (oCustomEvent.visible) {

                    oLabel.setVisible(false);

            }

    });


    oMap.attach('mouseenter', function(oCustomEvent) {

            var oTarget = oCustomEvent.target;

            // 마커위에 마우스 올라간거면

            if (oTarget instanceof nhn.api.map.Marker) {

                    var oMarker = oTarget;

                    oLabel.setVisible(true, tMarker); // - 특정 마커를 지정하여 해당 마커의 title을 보여준다.

            }

    });


    oMap.attach('mouseleave', function(oCustomEvent) {

            var oTarget = oCustomEvent.target;

            // 마커위에서 마우스 나간거면

            if (oTarget instanceof nhn.api.map.Marker) {

                    oLabel.setVisible(false);

            }

    });


    oMap.attach('click', function(oCustomEvent) {

            var oPoint = oCustomEvent.point;

            var oTarget = oCustomEvent.target;

            mapInfoTestWindow.setVisible(false);

            // 마커 클릭하면

            if (oTarget instanceof nhn.api.map.Marker) {

                    // 겹침 마커 클릭한거면

                    if (oCustomEvent.clickCoveredMarker) {

                            return;

                    }

                    // - InfoWindow 에 들어갈 내용은 setContent 로 자유롭게 넣을 수 있습니다. 외부 css를 이용할 수 있으며, 

                    // - 외부 css에 선언된 class를 이용하면 해당 class의 스타일을 바로 적용할 수 있습니다.

                    // - 단, DIV 의 position style 은 absolute 가 되면 안되며, 

                    // - absolute 의 경우 autoPosition 이 동작하지 않습니다. 

                    mapInfoTestWindow.setContent(addressInfo);

                    mapInfoTestWindow.setPoint(oTarget.getPoint());

                    mapInfoTestWindow.setVisible(true);

                    mapInfoTestWindow.setPosition({right : 10, top : 35});

                    mapInfoTestWindow.autoPosition();

                    return;

            }

            oMap.addOverlay(tMarker);

    });

    

    setInfo();

    

    function setInfo() {

    mapInfoTestWindow.setContent(addressInfo);

    mapInfoTestWindow.setPoint(oCenterPoint);

    mapInfoTestWindow.setVisible(true);

    mapInfoTestWindow.setPosition({right : 10, top : 35});

    mapInfoTestWindow.autoPosition();

    oMap.addOverlay(mapInfoTestWindow); // - 지도에 추가.

    }

    

function setCenterPT() {

oMap.setCenter(oCenterPoint);

oMap.setLevel(defaultLevel);

}

</script>