2

我有一个应用程序,可以在当前/单击的标记周围添加 50 英里半径(来自 mapMarkers [])。我知道所选标记的索引号及其 LatLng 位置为“myPosition”,其他标记的 LatLng 位置为 mapMarkers[i].point。

在地图上绘制完圆圈后,我调用以下简单函数来遍历所有 mapMarkers[] 以计算与当前标记的距离,然后计算有多少标记实际落在 50mi 半径内。很简单,对吧?

问题:以下例程在当前标记的第一次迭代(即第一次单击)时不会产生任何结果。但是会在第二次和后续点击当前标记时产生预期的结果。

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”在地图加载时声明。注释掉距离计算会在当前标记的第一次迭代中产生结果。

有什么想法可能导致这个问题吗?

4

1 回答 1

1

WRT 我上面的评论:我认为,几何库只是因为您提出了请求而加载。请参阅此处 developers.google.com/maps/documentation/javascript/libraries。当您调用谷歌地图 js(在页面加载期间)时,包括几何球体库。

例如:

 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing,geometry,weather"></script>
于 2013-03-22T15:55:33.113 回答