본문 바로가기
매쉬업

[ JAVASCRIPT ] 구글 지도 구현 ( google map api - geocoding 포함)

by 정윤재 2012. 11. 16.

아래 개발 코드 중간 중간에 구현 설명을 넣었으며

 

한국 지역들에 대한 좌표들은 DB 화 해서 .sql 파일로 만들어 놓았다.

 

이게 있으면 지오코딩의 쿼리수 제한 때문에 고생할 일은 없을 것 같다.

 

 

google_map_korea_coordinate.sql

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">  
html { height: 100% }  
body { height: 100%; margin: 0px; padding: 0px }  
#map_canvas { height: 100% }
</style>
<script>
var x = "37.4837121";
var y = "127.0324112";
//전국에 대한 중심 좌표(지도 중심 좌표 설정-변경 해도 됨)

 

function initialize() {    
 var latlng = new google.maps.LatLng(x, y);    
 //map center coordinate (맵 중심 좌표)
 //좌표 객체를 이렇게 만든다. marker 를 만들때도
 //이렇게 객체를 만들어서 사용할 수 있다.
 var myOptions = {      
   zoom: 7,      
   center: latlng,      
   mapTypeId: google.maps.MapTypeId.ROADMAP    
   };   
 var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);  
 
 
    //var greenIcon = new google.maps.MarkerImage(
    //        "http://www.jfree.org/jfreechart/images/PieChartDemo1.png",
    //        new google.maps.Size(30, 40),
    //        new google.maps.Point(0, 0)
    //    );
   
    var chartIcon = new google.maps.MarkerImage(
            "http://www.jfree.org/jfreechart/images/PieChartDemo1.png",
            new google.maps.Size(100, 100),
            '',
            '',
            new google.maps.Size(100, 100)
        );   
   
  //  var marker = new google.maps.Marker({
   //     position: latlng,
   //     icon: greenIcon,
   //     title:latlng.formatted_address,
   //     map: map
   // });
   
    var geocoder =  new google.maps.Geocoder();
   
    var region = document.getElementById("region1").value.split(",");
    //마커를 올릴 지역을 가져온다.
    if ( region.length > 0 ) {
        for ( var i = 0; i < region.length; i++ ) {
            geocoder.geocode( {'address': region[i]}, function(results, status) {
             //지오 코딩이라는 지역 이름을 가지고 좌표를 얻을 수 있는 API 를 이용하여 좌표를 가져온다.
                if ( status == google.maps.GeocoderStatus.OK ) {
                    for ( var j = 0; j < results.length; j++ ) {                       
                        var marker = new google.maps.Marker({
                            position: results[j].geometry.location,
                            icon: chartIcon,
                            title:results[j].formatted_address,
                            map: map
                        });
                        //마커를 만들어 준다.
                        //좌표를 알고 있을 경우   position: results[j].geometry.location 부분에 var latlng = new google.maps.LatLng(x, y);
                        //와 같이 객체를 만들어서 position: latlng 를 넣어 준다.
                        //좌표를 알고 있다면 굳이 지오코더를 쓸 필요가 없다.
                        //한국 지역에 대한 코드를 DB 화 해 놓은 데이터가 있는데
                        //첨부 .sql 파일을 읽어보면 알 수 있다.
                        //지오코더는 하루에 2500건 밖에 질의 할 수 없기 때문에
                        //DB 화 해 놓은 곳에서 읽으면 그만큼 쿼리 수를 줄일 수 있다.
                       
                        google.maps.event.addListener(marker, 'click', function(){
                           // clickMakerImage(marker);
                           // marker 를 클릭 했을 때 이벤트를 여기서 설정 할 수 있다.
                        });
                    }
                }
                else {
                    alert("ERRER - region["+i+"] : "+region[i]);
                    alert("Geocode was not successful for the following reason: " + status);
                }
            });
        }
    }   
}


</script>

<title>Insert title here</title>
</head>
<body onload="initialize()">
<input type="hidden" id="region1" value="서울특별시,대전광역시,대구광역시"/>
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

 

 

 

위와 같이 구현 하면 결과는 아래와 같다.

 

 

'매쉬업' 카테고리의 다른 글

Open Api 제공 사이트 모음  (0) 2011.07.06

댓글