Javascript 如何设置单张弹出窗口的特定位置

Javascript 如何设置单张弹出窗口的特定位置,javascript,leaflet,Javascript,Leaflet,我用传单做了一些绘图,我对结果非常满意 然而,有一件小事一直困扰着我: 我有两个不同的圆圈,它们绑定了弹出窗口,根据我点击圆圈的位置,弹出窗口会在不同的位置打开 下面是一些超级简单的示例代码 const circle=新的L.circle([52.5,13.35])。添加到(地图); var popup=L.popup().setContent(“hello”); 我也尝试过var popup=L.popup().setLatLng([52.5,13.35]).setContent(“he

我用传单做了一些绘图,我对结果非常满意

然而,有一件小事一直困扰着我:

我有两个不同的圆圈,它们绑定了弹出窗口,根据我点击圆圈的位置,弹出窗口会在不同的位置打开

下面是一些超级简单的示例代码

const circle=新的L.circle([52.5,13.35])。添加到(地图);
var popup=L.popup().setContent(“hello”);
我也尝试过
var popup=L.popup().setLatLng([52.5,13.35]).setContent(“hello”)

那么,有没有(最好)简单的方法使弹出框在圆的中间打开(或者将圆的中间作为“定位点”),以便我点击圆时弹出框总是在同一位置打开

非常轻微,但如有任何帮助或图书馆指示,将不胜感激

谢谢

让我引用一下每个
L.Layer
(包括每个
L.Circle
)都有的
openPopup
方法:

openPopup(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.on('click', function(ev) { ev.target.openPopup(ev.target.getLatLng()) });

参见a.

我不明白为什么我们需要在
弹出窗口中添加
onclick
,因为它已经通过传单实现了。此答案的前2个选项将在创建时打开弹出窗口,这可能是不需要的。第三个添加了一个不必要的
onclick
事件。难道没有更好的方法吗?这不是打开弹出窗口,而是在特定位置打开弹出窗口。这样做的方法是不要依赖默认行为。
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()) });