javascript - 如何为传单弹出窗口设置特定位置
问题描述
我一直在用 Leaflet 做一些映射,我对结果非常满意。
然而,只有一件小事一直困扰着我:
我有两个不同的圆圈,它们绑定了弹出窗口,并且根据我单击圆圈的位置,弹出窗口在不同的位置打开......
这是一些超级简单的示例代码。
const circle = new L.circle( [52.5, 13.35] ).addTo(map);
var popup = L.popup().setContent("hello");
我也试过var popup = L.popup().setLatLng( [52.5, 13.35] ).setContent("hello");
那么是否有一种(最好)简单的方法可以使弹出框在圆圈的中间打开(或者将圆圈的中间作为“锚点”),这样无论我在哪里点击圆圈,弹出窗口总是会打开在同一个地方?
非常小,但希望有任何帮助,或对图书馆的指示,
谢谢!
解决方案
让我引用有关 every (包括 every )具有的方法的Leaflet 文档:openPopup
L.Layer
L.Circle
openPopup(<LatLng> latlng?)
如果没有传递,则在指定
latlng
或默认弹出锚点处打开绑定弹出窗口。latlng
因此,您可以:
const circle = new L.circle( [52.5, 13.35] ).bindPopup("hello").addTo(map);
circle.openPopup([52.5, 13.35]);
或者
const circle = new L.circle( [52.5, 13.35] ).bindPopup("hello").addTo(map);
circle.openPopup(circle.getLatLng());
或者
const circle = new L.circle( [52.5, 13.35] ).bindPopup("hello").addTo(map);
circle.on('click', function(ev) { circle.openPopup(circle.getLatLng()) });
甚至
const circle = new L.circle( [52.5, 13.35] ).bindPopup("hello").addTo(map);
circle.on('click', function(ev) { ev.target.openPopup(ev.target.getLatLng()) });
请参阅一个工作示例。