检测标记是否在谷歌地图上的圆圈覆盖范围内(Javascript API V3)
Detect if marker is within circle overlay on Google Maps (Javascript API V3)
我在地图周围有标记,在标记你的位置的标记上有一个半径(圆圈覆盖)(每次移动都会改变)。有没有什么方法可以检查一下其他标记是否在圆圈内?
更新
我通过循环浏览每个其他标记来解决这个问题,并使用几何体库计算标记和其他标记之间的距离,然后使用一个简单的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();
}
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- Javascript 闭包 - 全局范围内被覆盖函数的行为
- 检测标记是否在谷歌地图上的圆圈覆盖范围内(Javascript API V3)