구글맵 API2010. 1. 22. 20:20

거리 구하는 함수가 분명 있을것 같은데 찾지를 못해서 직접 계산했었습니다.
그런데 드디어 함수를 찾았네요.   

거리계산 예제

이전 포스트 에서 직접 계산한 것과 오차는 거의 없는 것 같습니다.


    var base_latlng, cur_latlng;
   
    function GM_load() {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(36.615527, 127.353515), 12);
        map.setUIToDefault();
        map.enableGoogleBar();

        GEvent.addListener(map, "click", function(overlay,point) {
            base_latlng = map.fromContainerPixelToLatLng(point);
            var lmarker = new GMarker(point);
            map.addOverlay(lmarker);
            lmarker.setImage("http://maps.google.com/mapfiles/ms/icons/red-pushpin.png");
        });

        GEvent.addListener(map, "singlerightclick", function(point, src, overlay){
            cur_latlng = map.fromContainerPixelToLatLng(point);

            var rmarker = new GMarker(cur_latlng);
            map.addOverlay(rmarker);
            rmarker.setImage("http://maps.google.com/mapfiles/ms/icons/purple-pushpin.png");

            var dist = cur_latlng.distanceFrom(base_latlng);
            var myHtml = "Distance: " + dist;
            map.openInfoWindow(cur_latlng, myHtml);
        });
    }


base_latlng, cur_latlng 를 전역으로 선언했습니다.
왼쪽 클릭한 좌표를 fromContainerPixelToLatLng 함수로 base_latlng에 넣고, 마커도 넣었습니다.
마찬가지로 오른쪽 클릭한 좌표를 cur_latlng에 넣었습니다.
그리고 distanceFrom 함수로 거리를 구한 다음 말풍선으로 거리를 표시했습니다.
distanceFrom 함수가 반환하는 거리의 단위는 미터입니다.

Posted by 못생긴나무