Leaflet 在传单中获取div屏幕位置

Leaflet 在传单中获取div屏幕位置,leaflet,Leaflet,我正在用传单做一个项目。我想在地图上放置对象的标签。我不希望标签出现在地图上。我想把标签放在地图上方,但要放在屏幕或从一个latLng点算起的div左侧位置 我似乎无法使用可用的功能获得正确的位置。是否有一些例子可以让我了解?我认为传单可以做到这一点 这里的关键是利用-它将为您提供相对于传递的L.LatLng的贴图容器的像素坐标 所以为记号创建一个容器 <div id="topbar"><span id="toptick">↓</span></d

我正在用传单做一个项目。我想在地图上放置对象的标签。我不希望标签出现在地图上。我想把标签放在地图上方,但要放在屏幕或从一个latLng点算起的div左侧位置

我似乎无法使用可用的功能获得正确的位置。是否有一些例子可以让我了解?我认为传单可以做到这一点


这里的关键是利用-它将为您提供相对于传递的
L.LatLng
的贴图容器的像素坐标

所以为记号创建一个容器

    <div id="topbar"><span id="toptick">↓</span></div>
    <div id="leaflet"></div>
…在地图初始化后运行,在地图每次移动后

repositionEdges();
map.on('move zoom', repositionEdges);
…最后,在该函数中,水平移动勾号并调整其样式

function repositionEdges(){
    var offset = map.latLngToContainerPoint(geopoint);
    document.getElementById('toptick').style.left = offset.x + 'px';
}
您可以在中看到一个工作示例

这只是一种方法。如果要使用多个点,或者要使用
绘制记号,则具体实现将有所不同


另请参见中的分划、边缘比例尺和边缘标记插件。这些插件包含类似概念的实现。

欢迎使用SO!听起来你会感兴趣的。否则,您可能需要更详细地解释您试图实现的目标,可能需要一些草图和示例代码。我希望能够将标签放置在地图上方正确的左侧位置。我在上面的评论中添加了一个图像。假设一条线字符串在地图上。在地图上方的div中,我希望能够在相同的page.left位置添加文本,比如说行的开始。我需要能够确定直线起点的左侧位置,以便标签将在地图上与直线的实际起点对齐。我正在控制地图的缩放,以便在将线字符串添加到地图后它不会改变这正是我想要的。谢谢你的帮助。顺便说一句,请阅读关于接受答案的内容。
function repositionEdges(){
    var offset = map.latLngToContainerPoint(geopoint);
    document.getElementById('toptick').style.left = offset.x + 'px';
}