現在/クリックされたマーカーの周囲に半径 50 マイルを追加するアプリがあります (mapMarkers[] から)。選択したマーカーのインデックス番号とその LatLng 位置を「myPosition」として、他のマーカーの LatLng 位置を mapMarkers[i].point として知っています。
マップ上に円が描画された後、次の単純な関数を呼び出して、すべての mapMarkers[] をステップスルーして現在のマーカーからの距離を計算し、半径 50 マイル内に実際に含まれるマーカーの数をカウントします。シンプルですね。
問題: 次のルーチンは、現在のマーカーの最初の反復 (つまり、最初のクリック) で結果を生成しません。ただし、現在のマーカーを 2 回目以降にクリックすると、期待どおりの結果が得られます。
function inCircle() {
var j = 0;
var myDistance = 0;
for (var i = 0; i < mapMarkers.length; i++) {
myDistance = google.maps.geometry.spherical.computeDistanceBetween(myPosition, mapMarkers[i].point);
myDistance = parseInt(myDistance/1609.34) //meters to miles
if (myDistance <= 50) {
j = j + 1;
//Do more stuff...
}
}
alert("Markers inside circle: " + j);
}
円を選択したマーカーにバインドした直後に、この関数を呼び出します。「myPosition」は、マップが読み込まれるときに宣言されます。距離計算をコメントアウトすると、現在のマーカーの最初の反復で結果が生成されます。
この問題の原因は何ですか?