检测标记是否在Google地图上的圆形覆盖范围内(Javascript API V3)

Joe*_*ery 16 javascript google-maps google-maps-api-3

我在地图周围点缀了标记,并在标记您位置的标记上设置了半径(圆形覆盖)(每次移动时都会更改).有什么方法可以检查其他标记是否进入圆圈内?

UPDATE

我通过循环每个其他标记来解决这个问题,并使用几何库计算标记与另一个标记之间的距离,然后使用简单的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++;
    });
}
Run Code Online (Sandbox Code Playgroud)

我想要注意上面的代码使用jQuery,所以如果你不使用jQuery它将无法正常工作.

Mar*_*ark 46

这是一种向类添加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();
}
Run Code Online (Sandbox Code Playgroud)