2012-12-26 89 views
1

我在多段線中工作,我需要獲得此距離。所以如果有人能幫助我會非常感激。多段線的距離

此致敬禮。

這是我的代碼:

function polyline() { 
downloadUrl("xmlPolyline.asp", function(data) { 
    var xml = xmlParse(data); 
    var markersPath = xml.documentElement.getElementsByTagName("marker"); 
    var path = []; 


    for (var i = 0; i < markersPath.length; i++) { 
    var lat = parseFloat(markersPath[i].getAttribute("lat")); 
    var lng = parseFloat(markersPath[i].getAttribute("lng")); 
    pointPath = new google.maps.LatLng(lat,lng); 


    path.push(pointPath); 

}//finish loop 

polyline = new google.maps.Polyline({ 
    path: path, 
    strokeColor: "#FF0000", 
    strokeOpacity: 1.0, 
    strokeWeight: 2 
}); 


//new polyline 

polyline.setMap(map); 

}); //end download url 

} 

回答

4

"geometry" library has a computeDistanceBetween method

像這樣(未測試)應該返回的結果以米爲單位:

var polylineLength = 0; 
for (var i = 0; i < markersPath.length; i++) { 
    var lat = parseFloat(markersPath[i].getAttribute("lat")); 
    var lng = parseFloat(markersPath[i].getAttribute("lng")); 
    var pointPath = new google.maps.LatLng(lat,lng); 
    path.push(pointPath); 
    if (i > 0) polylineLength += google.maps.geometry.spherical.computeDistanceBetween(path[i], path[i-1]); 

} 
alert("the length of the polyline is "+polylineLength+" meters"); 
+0

你好geocodezip,當I型警報我得到了很多的結果:如果(I> 0)polylineLength + = google.maps.geometry.spherical。 computeDistanceBetween(path [i],path [i-1]); \t \t alert(polylineLength); –

+0

它總結了每一點,我怎麼能得到它們的總和而不是得到每一個呢? –

+0

你的目標是什麼?如果你想要多段線的長度(這是你所說的目標),當循環完成時將警告polylineLength加起來所有的段。 – geocodezip

7

這很容易 - 使用內置的幾何體中的庫函數...

polyLengthInMeters = google.maps.geometry.spherical.computeLength(yourPolyline.getPath().getArray()); 

要使用幾何您在載入地圖api時聲明的庫

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key={YOUR_KEY}&amp;sensor=false&amp;libraries=geometry"></script> 

有關更多信息,請參閱:

Google API Polyline reference

Google API mcvArray reference

Google API Spherical geometry reference