谷歌地图API通知,如果标记是附近的另一个
Google Maps API Notify if Marker is Near Another
我正在使用Google地图API,允许用户通过单击地图来设置位置。无论用户在哪里点击,标记就在哪里,而且效果很好。我的问题是,我的用户添加重复的位置到我的应用程序,尽管事实上,他们可以直观地看到已经有一个标记在那个位置(我正在加载标记从我的数据库中现有的位置)。
是否有一种方法,在谷歌地图API中,如果一个标记被放置在地图上已经有标记的X距离内,就会触发一个事件?我知道我可能会以某种方式在javascript中使用haversine算法,但如果可以的话,我想避免在客户端出现这种复杂性。
另一种不需要进一步计算距离或类似的方法:
对于放置在地图上的每个标记也在相同位置创建一个圆圈。通过设置fillOpacity和stroke不透明度为0
来隐藏圆圈,并应用适合您需要的半径。
结果:圆圈不可见,但仍然存在。当用户点击隐藏的圆圈时,地图将不响应点击事件。
请尝试这个方法。这可能需要根据您的需要进行一些修改,这将是客户端,但逻辑也可以在服务器端实现。
function CheckIFMarkersAreNearBy(preExistingMarkersArray, milesToCheck, lat, lon){
var range = milesToCheck/70;
var minLat = lat - range;
var maxLat = lat + range;
var minLon = lon - range;
var maxLon = lon + range;
var markersNearBy = 0;
for( var i = 0; i < preExistingMarkersArray.length; i++){
if(preExistingMarkersArray[i].lat > minLat && preExistingMarkersArray[i].lat < maxLat && preExistingMarkersArray[i].lon > minLon && preExistingMarkersArray[i].lon < maxLon){
markersNearBy++;
}
}
alert('you have ' + markersNearBy + 'markers near by you current selection');
}
我不认为这有特定的功能。最接近的是google。maps。geometry。spherical其中包含一个computeDistanceBetween(from:LatLng, to:LatLng, radius?:number)
因此,在你在地图上放置一个新标记之前,只需获取当前标记与新请求标记之间的距离。请记住,即使Google Maps API提供了这样做的方法,它仍然是在客户端,所以无论如何您都不会避免"客户端的复杂性"。
相关文章:
- 从imgur api的另一个浏览器拖放图像
- Ember.js 和 ember-data 与外部(另一个域)API 配合使用
- 如何通过Bluebird承诺您自己的javascript api,该api使用另一个承诺的api
- 如何在另一个项目中托管API 2.0
- 是否可以使用渠道 API 从另一个域连接到我的应用引擎
- 如何使用JavaScript API将Google云端硬盘文档从一个文件夹复制到另一个文件夹
- 为什么其中一个侦听器适用于媒体 API 事件,而另一个则不适用于媒体 API 事件
- 从 API 中调用另一个 API
- 谷歌地图API v3放置搜索 - 将另一个参数传递给回调函数
- Chrome API:如何使用当前空的“新标签”而不是创建另一个标签
- 显示'详细信息'特定对象的-将JSON值从一个页面传递到另一个页面以查询API
- 用于将树分支从集合移动到另一个集合的Firebase API
- 让 YouTube API 在第一个视频结束时自动开始播放另一个视频
- 从另一个API调用谷歌地图信息窗口
- 渲染没有被一个API调用,而被另一个API调用
- 从另一个函数调用函数- Javascript API
- 使用Feed对话框和Javascript API在另一个用户的墙上发布
- Javascript SDK:我可以在FB.api()中调用另一个FB.api()吗?
- 我如何使用已由另一个api设置的变量,在我的javascript函数
- 从PhantomJS启动另一个API