2017-01-05 5 views
0

데이터베이스에서 많은 Latlong을 가져 와서 Google지도에 올려 놓는 자바 스크립트가 있습니다. 이제 두 마커 사이의 거리를 찾고 싶습니다. 나는 ..Google지도에서 두 마커 사이의 거리를 찾는 방법

내 스크립트는 다음과 같습니다 .. 건네 줄하지만, 관련 정보를 찾을 수 없습니다했습니다 여기 기하학 Lilbrary 구글지도 문서 사용

var map,infoWindow; 
 

 

 

 
function getData() { 
 
    
 
    var lat1 = map.getCenter().lat(); 
 
    var lng1= map.getCenter().lng(); 
 
    var zoom1 = map.getZoom(); 
 
     
 
     
 
    map = new google.maps.Map(document.getElementById("map"), { 
 
     center: new google.maps.LatLng(lat1, lng1), 
 
     zoom: zoom1, 
 
     mapTypeId: 'roadmap' 
 
     }); 
 
     
 
     
 
    infoWindow = new google.maps.InfoWindow; 
 
    
 
    downloadUrl("http://x.x.x.x/rfplan/getsitedata_1.php?ssa="+$("#ssa option:selected").text() + 
 
      "&type="+$("#type option:selected").val() + 
 
      "&make="+$("#make option:selected").val() + 
 
      "&comm="+$("#comm option:selected").val() + 
 
      "&sev="+$("#sev option:selected").val() + 
 
      "&include="+$("#include option:selected").val() + 
 
      "&can="+$("#cand option:selected").val() + 
 
      "&ip_vand="+$("#vand option:selected").val(), function(data){ 
 
       
 
       
 
       var xml = data.responseXML; 
 
       var markers = xml.documentElement.getElementsByTagName("marker"); 
 
       for (var i = 0; i < markers.length; i++) { 
 
        var address = markers[i].getAttribute("info"); 
 
        var point = new google.maps.LatLng(
 
         parseFloat(markers[i].getAttribute("latitude")), 
 
         parseFloat(markers[i].getAttribute("longitude"))); 
 
        var html = "<b>" + name + "</b> <br/>" + address; 
 
        var icon = customIcons[markers[i].getAttribute("color")] || {}; 
 
        var marker = new google.maps.Marker({ 
 
        map: map, 
 
        position: point, 
 
        icon: icon.icon 
 
        }); 
 
        bindInfoWindow(marker, map, infoWindow, html); 
 
       } 
 
      
 
          
 
     });  
 
     
 
     
 
     
 
    
 
} 
 

 

 

 

 

 
function proc(){ 
 
    
 
    
 
} 
 

 

 

 

 
    function load() { 
 
     map = new google.maps.Map(document.getElementById("map"), { 
 
     center: new google.maps.LatLng(22, 71), 
 
     zoom: 7 
 
     mapTypeId: 'roadmap', 
 
     }); 
 
     infoWindow = new google.maps.InfoWindow; 
 
    } 
 
    
 
    function bindInfoWindow(marker, map, infoWindow, html) { 
 
     google.maps.event.addListener(marker, 'click', function() { 
 
     infoWindow.setContent(html); 
 
     infoWindow.open(map, marker); 
 
     }); 
 
    } 
 

 
    function downloadUrl(url, callback) { 
 
     var request = window.ActiveXObject ? 
 
      new ActiveXObject('Microsoft.XMLHTTP') : 
 
      new XMLHttpRequest; 
 

 
     request.onreadystatechange = function() { 
 
     if (request.readyState == 4) { 
 
      request.onreadystatechange = doNothing; 
 
      callback(request, request.status); 
 
     } 
 
     }; 
 
      request.open('GET', url, true); 
 
     request.send(null); 
 
    } 
 

 
    function doNothing() {} 
 

+0

http://stackoverflow.com/questions/7997627/google-maps-how-to-get-the-distance-between-two-point-in-metre 가능한 한 번 중복 확인하십시오. –

답변

1

아래 코드를 시도하십시오.

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script> 

    <script> 
    //calculates distance between two points in km's 
    function calcDistance(p1, p2) { 
     return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000).toFixed(2); 
    } 

    var cordinateArr; 
    //add this event in gmap script 

    google.maps.event.addListener(marker, "click", function (event) { 
     cordinateArr.push(this.position); 
     if(cordinateArr.length==2) 
     { 

     alert(calcDistance(cordinateArr[0], cordinateArr[1])); 
     cordinateArr = []; 
     } 
    }); //end addListener 
    </script> 
+0

재 경기에 감사하지만 2000 개의 마커가 있습니다. 내 문제는 그 두 마커를 선택하는 방법을 모르겠다 .. – user2706873

+0

그래서 그것은 모든 마커에 대한 거리를 계산해야 할 것 같아 ?? 또는 어떤 두 개의 특정 마커? –

+0

모든 2000 마커가지도에 표시되며 사용자는 두 마커를 선택하여 두 마커 사이의 거리를 찾습니다. – user2706873

관련 문제