2010-12-18 3 views
4

Google지도 v3에서 폴리 라인 길이를 얻는 방법을 아는 사람이 있습니까? 현재 Haversine fomula를 사용하고 있지만 폴리 라인이 시작을 충족하면 가장 짧은 길이를 계산합니다. 누구든지 폴리 라인 길이를 계산할 수있는 방법을 알고 있습니까?Google지도 v3에서 폴리 라인 길이 가져 오기

고마워요. 마크

답변

16

이러한 기능 Google지도 API를 확장 :

google.maps.LatLng.prototype.kmTo = function(a){ 
    var e = Math, ra = e.PI/180; 
    var b = this.lat() * ra, c = a.lat() * ra, d = b - c; 
    var g = this.lng() * ra - a.lng() * ra; 
    var f = 2 * e.asin(e.sqrt(e.pow(e.sin(d/2), 2) + e.cos(b) * e.cos 
    (c) * e.pow(e.sin(g/2), 2))); 
    return f * 6378.137; 
} 

google.maps.Polyline.prototype.inKm = function(n){ 
    var a = this.getPath(n), len = a.getLength(), dist = 0; 
    for (var i=0; i < len-1; i++) { 
     dist += a.getAt(i).kmTo(a.getAt(i+1)); 
    } 
    return dist; 
} 

을 한 다음 호출 할 수 있습니다

var length_in_km = yourPoly.inKm(); 

소스 : http://groups.google.com/forum/#!topic/google-maps-js-api-v3/Op87g7lBotc

+2

최고. 대답은 받아 들여야한다. 감사 –

4

사용 구글 기하학 :

이 같은
<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.exp&libraries=geometry"></script> 

그리고 그것의 쉬운 :

var meters = google.maps.geometry.spherical.computeLength(myPolyline.getPath()); 
관련 문제