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

Detect if marker is within circle overlay on Google Maps (Javascript API V3)

本文关键字:范围内 覆盖 Javascript API V3 是否 谷歌地图 检测      更新时间:2023-09-26

我在地图周围有标记,在标记你的位置的标记上有一个半径(圆圈覆盖)(每次移动都会改变)。有没有什么方法可以检查一下其他标记是否在圆圈内?

更新

我通过循环浏览每个其他标记来解决这个问题,并使用几何体库计算标记和其他标记之间的距离,然后使用一个简单的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,它就不起作用。

以下是向google.maps.Circle类添加contains方法的方法。它首先使用边界框来排除一个点,如果它甚至不在边界框中。如果它在边界框中,则会将点到中心的距离与半径进行比较,并且仅当距离小于半径时才返回true。

添加下面的javascript后,就可以在circle对象上调用contains()方法。

google.maps.Circle.prototype.contains = function(latLng) {
  return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}