2017-01-05 7 views
0

У меня есть javascript, который извлекает много Latlong из базы данных и помещает его в Google Map. Теперь я хочу найти расстояние между любыми двумя маркерами. Я serched, но не смог найти нужную информацию ..Как найти расстояние между любыми двумя маркерами в Google MAP javascript

мой сценарий, как показано ниже ..

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 check once. –

ответ

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