google map api 兩點距離

edited 十月 2013 in Javascript
我想要取得許多點彼此之間的距離
知道可以用.getDistance().meters;來做
而我用GEvent.addListener時...存取距離的筆數卻不一定
例如說我總共要存取19筆資料 但最後結果都是9~~19這範圍
為什麼呢??

以下是我的部分程式碼
function distanza() {
//window.alert(n1);
for(var i=0; i<n1; i++){
gdir = new GDirections();
if (i!=(n1-1)){
gdir.load("from: " + addr + " to: " + addr[i+1], { "locale":
"it" });
}else{
//從終點回到起點
gdir.load("from: " + addr + " to: " + addr[0], { "locale":
"it" });
}
//window.alert("i="+i)
//GEvent.addListener(gdir, "load", onGDirectionsLoad);
GEvent.addListener(gdir[n2], "load", function() {
test[n2] = gdir[n2].getDistance().meters;
window.alert(n2+"="+test[n2]);
n2++;
});
}
//test = gdir.getDistance().meters
//n2++


}





addr是存取地址的陣列
n1是地址的資料數...
n2從0開始..

可否請各位高手幫忙修改一下呢?
目的是要將距離的數據儲存在test的陣列裡面!!!!


謝謝..> < 拜託拜託~~想很久哩

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=4262

評論

  • edited 六月 2009
    也許是查詢頻率過高導致的吧,個人建議取得各個住址的座標點儲存,用座標去計算距離,當然,這需要花點時間算數學 ;)
  • edited 六月 2009
    但如果用座標求距離是兩點的直線距離~我要的事實際的路線距離!!
    所以需要用.getDistance().meters來達到目的~有什麼方法可以改進呢= =
  • edited 七月 2009
    挖了一下 api ,你需要的應該是 loadFromWaypoints 這個方法,最多可以塞 25 個住址一次算,就不用每兩個住址計算一次了。不過這種距離跟多點之間的直線距離應該都是參考用途,如果你的應用對於細節有較高的要求,也許可以尋求一些付費服務。
  • edited 七月 2009
    我知道loadFromWaypoints的語法~但我需要的是兩點的距離~!! 要做其他演算法運算的數據~~~~

  • edited 六月 2012
    我給你一個我用PHP寫的函式你作為參考吧,用其修改成js並不難.
    /**
    * 計算兩組經緯度座標間的距離
    * params:lat1緯度1,lng1經度1,lat2緯度2,lng2經度2,len_type(1:m|2:km);
    * Echo GetDistance($lat1,$lng1,$lat2,$lng2).'米';
    */
    Function GetDistance($lat1,$lng1,$lat2,$lng2,$len_type=1,$decimal=2){
    $EARTH_RADIUS=6378.137; //地球半徑,假設地球是規則的球體
    $PI=3.1415926; //圓周率
    $radLat1 = $lat1 * $PI / 180.0;
    $radLat2 = $lat2 * $PI / 180.0;
    $a = $radLat1 - $radLat2;
    $b = ($lng1 * $PI / 180.0) - ($lng2 * $PI / 180.0);
    $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
    $s = $s * $EARTH_RADIUS;
    $s = Round($s*1000);
    IF($len_type>1){
    $s /= 1000;
    }
    Return Round($s,$decimal);
    }
  • edited 六月 2012
    新版GOOGLE map API就可以做出來的功能……還需要你的code?
    這位傳說中不斷打壓其他高手中的「高手」……
Sign In or Register to comment.