单张中心弹出窗口和标记到地图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单张中心弹出窗口和标记到地图相关的知识,希望对你有一定的参考价值。

我希望中心我的标记在弹出窗口打开..并且中心地图不在标记latlng中,而是在标记和弹出窗口的中心!问题是popup有dinamic内容(点击加载)。

地图大小是移动设备中的完整显示尺寸!我刚刚在弹出窗口中使用了autoPanPadding选项,但还不够

参考下图:

此解决方案集成在KeplerJs框架代码中。

答案

使用fitzpaddy的答案,我能够使这个代码有效并且更加灵活。

map.on('popupopen', function(e) {
    var px = map.project(e.popup._latlng); // find the pixel location on the map where the popup anchor is
    px.y -= e.popup._container.clientHeight/2 // find the height of the popup container, divide by 2, subtract from the Y axis of marker location
    map.panTo(map.unproject(px),{animate: true}); // pan to new center
});
另一答案

嗨斯特凡诺,

这是未经测试的伪代码,但Leaflet project/unproject函数应该提供帮助。

即;

// Obtain latlng from mouse event
var latlng;
// Convert latlng to pixels
var px = project(latlng);
// Add pixel height offset to converted pixels (screen origin is top left)
px.y -= mypopup.height/2
// Convert back to coordinates
latlng = unproject(px);
// Pan map
map.panTo(latlng,{animate: true});

这取决于缩放比例在计算期间是否恒定,因此您可能需要平移地图然后计算平移偏移以正确更新(使用animation,这只是一个平缓的过渡)。

祝好运!

另一答案

这是一个简单的解决方案:

首先,您将地图置于标记中心。

map.setView(marker.latLng);

然后打开弹出窗口。

var popup.openOn(map); = L.popup()
    .setLatLng(marker.latLng)
    .setContent(dynamic-content)
    .openOn(map);

Leaflet将自动平移地图,以便弹出窗口适合地图。为了使它看起来更漂亮,您可以使用CSS为弹出窗口添加margin-top。

以上是关于单张中心弹出窗口和标记到地图的主要内容,如果未能解决你的问题,请参考以下文章

javascript 中心标记和弹出在地图上

如何从地图外部与传单标记层进行交互?

有没有办法在点击时从地图框弹出窗口中获取信息?

Leaflet_创建地图(官网示例)

GMSMarker 信息窗口内容(片段)未更新

为移动目标 lat/lng 和缩放级别的动画偏移地图片段的中心