传单弹出窗口不能改变位置
Leaflet popup can't change position
我想更新我的 leaflet popup 职位。原因是,当我点击广义多段线(因为缩放级别较低)然后缩放到点击位置时,我的点击位置并不完全在对象上,因此我的弹出位置也不完全在对象上。
function zoomToFeature(e) {
console.log("ZOOM TO FEATURE");
// Set new selection
selected = e.target;
clickposition = e.latlng;
console.log("Selected layer:");
console.log(selected);
console.log("My clickposition: " + clickposition);
let closest_latlng = L.GeometryUtil.closest(mymap, selected.getLatLngs(), clickposition)
console.log("New Latlng calculated: " + closest_latlng);
var popup = selected.getPopup();
console.log("SET LATLNG");
popup.setLatLng(closest_latlng).openOn(mymap).update();
console.log("Popup: ")
console.log(popup);
console.log("Popup getLatLng: ")
console.log(popup.getLatLng());
}
这就是我的输出:
真的很奇怪,我的弹出对象具有来自点击位置的旧 latlng 值。但是当我打印方法“getLatLng()”时,就会显示新的计算值。问题是,在地图上,弹出窗口也显示在 clickposition 上,而不是我新计算的位置上。我的问题是,如何正确更新弹出窗口的位置?
我发现了问题,它与我实际想的完全不同...所以我 post 在这里,也许它对其他人也有帮助。
问题是我的点击事件 zoomToFeature(e)
是事件顺序中的第一个事件。在此事件之后是默认的传单 _openPopup(t)
事件。这个默认 _openPopup(t)
事件然后重置了我的弹出窗口位置。
现在我查看了创建弹出内容的部分。因为内容是通过 ajax 调用创建的,所以我现在等到内容完全加载并使用 layer.bindPopup(popup);
绑定到我的图层之后,我添加了自定义点击事件 zoomToFeature(e)
。
我在图层上的事件顺序现在是这样的:
我想更新我的 leaflet popup 职位。原因是,当我点击广义多段线(因为缩放级别较低)然后缩放到点击位置时,我的点击位置并不完全在对象上,因此我的弹出位置也不完全在对象上。
function zoomToFeature(e) {
console.log("ZOOM TO FEATURE");
// Set new selection
selected = e.target;
clickposition = e.latlng;
console.log("Selected layer:");
console.log(selected);
console.log("My clickposition: " + clickposition);
let closest_latlng = L.GeometryUtil.closest(mymap, selected.getLatLngs(), clickposition)
console.log("New Latlng calculated: " + closest_latlng);
var popup = selected.getPopup();
console.log("SET LATLNG");
popup.setLatLng(closest_latlng).openOn(mymap).update();
console.log("Popup: ")
console.log(popup);
console.log("Popup getLatLng: ")
console.log(popup.getLatLng());
}
这就是我的输出:
真的很奇怪,我的弹出对象具有来自点击位置的旧 latlng 值。但是当我打印方法“getLatLng()”时,就会显示新的计算值。问题是,在地图上,弹出窗口也显示在 clickposition 上,而不是我新计算的位置上。我的问题是,如何正确更新弹出窗口的位置?
我发现了问题,它与我实际想的完全不同...所以我 post 在这里,也许它对其他人也有帮助。
问题是我的点击事件 zoomToFeature(e)
是事件顺序中的第一个事件。在此事件之后是默认的传单 _openPopup(t)
事件。这个默认 _openPopup(t)
事件然后重置了我的弹出窗口位置。
现在我查看了创建弹出内容的部分。因为内容是通过 ajax 调用创建的,所以我现在等到内容完全加载并使用 layer.bindPopup(popup);
绑定到我的图层之后,我添加了自定义点击事件 zoomToFeature(e)
。
我在图层上的事件顺序现在是这样的: