我有一个应用程序,在当前/点击的标记周围添加50mi半径(来自mapMarkers [])。我知道所选标记的索引号及其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 :(得分:1)
WRT我上面的评论:我认为,几何图书馆只是因为你提出了请求而加载。请参阅developers.google.com/maps/documentation/javascript/libraries。在调用google maps js时(在页面加载期间),请包含几何球形库。
例如:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing,geometry,weather"></script>