如何“解除绑定”Mapbox中的弹出窗口?只允许从一定范围内的标记弹出(当用户移动时改变)
How to "unbind" Popups in Mapbox? Allowing only popups from markers within certain range(changing when user moves)
我正试图在我的地图上看到工具提示或弹出标记的能力之间切换,这取决于与它们的距离。有一个简单的方法来启用弹出窗口,但是有没有类似的方法
marker.bindPopup(entries[i].text_content);
删除再次查看弹出窗口的能力?
作为参考,这里是代码的完整部分
$http.get(ApiEndpoint.entry).then(function(data) {
entries = data.data;
for (i=0; i<entries.length; i++){
var lat = entries[i].lat;
var long = entries[i].long;
}
var markers = new L.MarkerClusterGroup({maxClusterRadius: 40, removeOutsideVisibleBounds: true, singleMarkerMode: true});
for (var i = 0; i < entries.length; i++) {
var a = entries[i];
var title = a[2];
marker = L.marker(new L.LatLng(a.lat, a.long), {
icon: L.mapbox.marker.icon({'marker-symbol': 'post', 'marker-color': '0044FF'}),
});
if(haversineDistance(current_lat, current_long, entries[i].lat, entries[i].long)<26){
marker.bindPopup(entries[i].text_content);
};
markers.addLayer(marker);
}
map.addLayer(markers);
});
其中haversineDistance函数用于计算当前位置到标记的距离。
我想,是一些代码,可以在一个循环中运行,删除所有的弹出窗口在一个时间间隔,允许我再次使用if语句,允许弹出范围内的标记,当用户移动
用您的L.Map
实例的locate
方法来定位带有传单的客户端。启动后,您可以侦听locationfound
事件。该事件包含一个L.LatLng
实例,其中包含客户机坐标。L.Marker
实例有一个getLatLng
方法,它返回一个带有标记坐标的L.LatLng
实例。您可以使用L.Latlng
实例的distanceTo
方法来计算它们之间的距离。在带有注释的代码中进一步解释:
// Markers in a LayerGroup
var group = new L.LayerGroup([
new L.Marker([0,0]),
new L.Marker([0,0])
]).addTo(map);
// Start geolocation (assuming map holds a L.Map instance)
map.locate();
// Listen for the event
map.on('locationfound', function(event){
// If succeeded get client coordinates
var clientLatLng = event.latLng;
// Loop over markers
group.eachLayer(function(marker){
// Get marker coordinates
var markerLatLng = marker.getLatLng();
// Calculate distance
var distance = clientLatLng.distanceTo(markerLatLng);
// When within 40 meters
if (distance < 40) {
marker.bindPopup('POP');
marker.openPopup();
} else {
marker.unbindPopup();
}
});
});
引用:
L.Map.locate (): http://leafletjs.com/reference.html位置事件
L.LatLng.distanceTo (): http://leafletjs.com/reference.html latlng-distanceto
p。我目前无法测试地理定位,所以我徒手制作了这个。应该没问题,希望;)
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 如何“解除绑定”Mapbox中的弹出窗口?只允许从一定范围内的标记弹出(当用户移动时改变)
- 如何改变网站范围内的jQuery slideUp/slideDown持续时间