2013-03-22 50 views
1

我有一个应用程序在当前/单击的标记(来自mapMarkers [])周围添加50mi半径。我知道所选标记的索引号及其LatLng位置为“myPosition”,其他标记的LatLng位置为mapMarkers [i] .point。标记之间的距离 - 第一次点击没有结果

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

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

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

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

+0

我认为,几何库仅载入,因为你提出的要求。看到这里https://developers.google.com/maps/documentation/javascript/libraries。当你调用谷歌地图js(页面加载期间)时,你是否包含了几何球形库? – DotNetWala 2013-03-22 15:51:41

+0

我没有......而且这能解决问题!谢谢〜 – 2013-03-22 15:54:23

+0

太棒了!我会发布一个答案。 – DotNetWala 2013-03-22 15:55:00

回答

1

WRT我上面的评论:我认为,几何图书馆只是加载,因为你提出了一个请求。请参阅developers.google.com/maps/documentation/javascript/libraries。当您调用Google地图js时(包括页面加载),请添加几何球形库。

如:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing,geometry,weather"></script> 
+1

再次感谢! - 马克 – 2013-03-22 15:57:40