我在地图上点缀了标记,并在标记您位置的标记上设置了半径(圆形叠加)(每次移动时都会更改)。 有什么方法可以检查其他标记是否进入圆圈内?
更新
我绕过每个其他标记,并使用几何库计算标记与另一个标记之间的距离,然后使用简单的if语句来查看它是否小于100米。
function checkAllChests() {
var Current = 0;
$.each(treasureArray, function() {
//var thisLocation = treasureArray[Current].getPosition();
var distanceBetween = Math.ceil(google.maps.geometry.spherical.computeDistanceBetween(treasureArray[Current].getPosition(), marker_me.getPosition()));
if(distanceBetween < 100) {
alert('CAN OPEN THIS CHEST');
}
Current++;
});
}
我想注意上面的代码使用jQuery,所以如果你不使用jQuery它将无法工作。
答案 0 :(得分:45)
这是一种向contains
类添加google.maps.Circle
方法的方法。如果它甚至不在边界框中,它首先使用边界框来排除一个点。如果它在边界框中,则它将点与中心的距离与半径进行比较,并且仅当距离小于半径时才返回true。
在下面添加javascript后,您可以在圆形对象上调用contains()方法。
google.maps.Circle.prototype.contains = function(latLng) {
return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}
答案 1 :(得分:-4)
google.maps.Circle.prototype.contains = function(latLng) {
return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}