首页 > 解决方案 > 如何为传单弹出窗口设置特定位置

问题描述

我一直在用 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");

那么是否有一种(最好)简单的方法可以使弹出框在圆圈的中间打开(或者将圆圈的中间作为“锚点”),这样无论我在哪里点击圆圈,弹出窗口总是会打开在同一个地方?

非常小,但希望有任何帮助,或对图书馆的指示,

谢谢!

标签: javascriptleaflet

解决方案


让我引用有关 every (包括 every )具有的方法的Leaflet 文档:openPopupL.LayerL.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()) });

请参阅一个工作示例


推荐阅读