gpt4 book ai didi

javascript - 传单禁用缩放到标记以及如何保持弹出窗口始终处于事件状态

转载 作者:行者123 更新时间:2023-11-28 18:52:44 25 4
gpt4 key购买 nike

您好,我有一个应用程序,可以在传单 map 上绘制一个人和他的 friend 的位置。我为此使用了两个单独的函数,因为有多个 friend 等。

当它绘制登录用户时,它会缩放到他的位置,然后当它绘制 friend 时,它会缩放到他的位置。我需要它,以便所有标记的弹出窗口始终处于事件状态,并且它不会缩放到任何一个标记。

  var markers = new L.FeatureGroup();
function addMarkerGroup(lat_ret,lon_ret,map,user){
map.removeLayer(markers);
markers = new L.FeatureGroup();
var marker = L.marker([lat_ret, lon_ret]).addTo(map).bindPopup("User:" + user).openPopup();
markers.addLayer(marker);
map.addLayer(markers);
}

var friend_markers = new L.FeatureGroup();
function addFriendMarkerGroup(lat_ret,lon_ret,map,user){
map.removeLayer(friend_markers);
friend_markers = new L.FeatureGroup();
var friend_marker = L.marker([lat_ret, lon_ret]).addTo(map).bindPopup("User:" + user).openPopup();
friend_markers.addLayer(friend_marker);
map.addLayer(friend_markers);
}

最佳答案

您确定打开弹出窗口时 map 会缩放吗?据我所知, map 只会平移,以便弹出窗口可见。我在你的代码中也没有看到任何实现缩放的内容,所以我认为你错了。如果您想禁用平移到刚刚打开的弹出窗口,您可以禁用 autoPan 选项:

new L.Marker([0, 0]).bindPopup('Foo', {
autoPan: false
}).addTo(map).openPopup();

http://leafletjs.com/reference.html#popup-autopan

通过在您注释/省略的地方用您自己的函数覆盖 L.MapopenPopup 函数,无法同时保持两个弹出窗口打开当前打开的弹出窗口关闭的行:

L.Map.include({
openPopup: function (popup, latlng, options) { // (Popup) or (String || HTMLElement, LatLng[, Object])

// Commented out, previous popup(s) will remain open
// this.closePopup();

if (!(popup instanceof L.Popup)) {
var content = popup;

popup = new L.Popup(options)
.setLatLng(latlng)
.setContent(content);
}
popup._isOpen = true;

this._popup = popup;
return this.addLayer(popup);
}
});

示例:http://plnkr.co/edit/0LPYmhJ3ew8wSBXBM6XC?p=preview

在 Leaflet 1.0(目前为测试版)中,有一个名为 autoClose 的新弹出选项,它将解决此问题:

new L.Marker([0, 0]).bindPopup('Foo', {
autoClose: false
}).addTo(map).openPopup();

关于javascript - 传单禁用缩放到标记以及如何保持弹出窗口始终处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com