0

Google Maps API (vs3) を使用してオンライン マップを作成しています。

私がやっていることは、データベースに場所 (緯度と経度) を保存し、initialize() でマップに追加することです。これにより、位置に応じてマーカーが配置されます。ここまでは順調ですね。

これで、自分の位置 (またはユーザーが定義した位置) を表示する関数ができました。緯度/経度で 111 km = 1 度以内にある場所を表示したいと思います。どうやってやるの?

私が何を意味するかを示すために:

関数showPlaceCloseBy(緯度、経度){

var myLat=lat;
var myLng=lng;

for (var i=0; i < pins.length; i++) {
     // HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
             returnDistance(myLat, myLng, pins[i],i);

    }
}



function returnDistance(myLat,myLng,pinToCompare,i){

// PIN  
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?

 // HERE I NEED TO DO THE CALCULATION AND RETURN THE PIN NAME.              

     }

そこで、myLat と pinLat の間で計算 (おそらく減算 - ? -) を行う必要があります。誰でも私を助けることができますか?

皆様ありがとうございました。

4

3 に答える 3

1

Google Maps API v3球体ジオメトリ ライブラリには次のメソッドがあります。

computeDistanceBetween(from:LatLng, to:LatLng) - number - 2 つの LatLng 間の距離を返します。

2 つの LatLng オブジェクト間の距離をメートル単位で返します。

(未検証)

var closeDistance = 111000; // 111 km
function showPlaceCloseBy(lat,lng){
  var myLocation = new google.maps.LatLng(lat, lng);
  closePins = [];
  for (var i=0; i < pins.length; i++) {
     // HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
     if (calculateDistanceBetween(myLocation, pins[i].getPosition()) < closeDistance)
     {
       closePins.push(pins[i]);
     }
  }
  return closePins;
}


// Note: do not use undocumented properties like .hb, .ib; they can and do change.
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?
于 2013-03-01T00:28:19.543 に答える
0

これは単純な距離の計算です http://www.purplemath.com/modules/distform.htm

あなたのコードは

return Math.sqrt( Math.pow( calcLat, 2 ) + Math.pow( calcLong, 2 ) )
于 2013-02-28T23:09:13.937 に答える
0

ここですべてを見つけることができます: http://www.movable-type.co.uk/scripts/latlong.html

さまざまな精度の距離、方向 (方位/方位角)、すべて ;-)

于 2013-02-28T23:16:20.650 に答える