类型错误:无法读取未定义的“latlng”属性。

8

我正在尝试在鼠标移动时获取x,y坐标。但是当我尝试获取它时,会出现错误。

类型错误:无法读取未定义的“lat lng”属性,在鼠标移动时(仪表板:593)在HTMLDivElement.onmousemove(仪表板:442)

<div id="map" onmousemove="mouseMove()"></div>
<script type="text/javascript">
        var iMaxZoom = 1;

        var map = L.map('map', {
            crs: L.CRS.Simple,
            minZoom: -5,
            maxZoom: 1
        });



        var bounds = [[0,0], [711,473]];

        var image = L.imageOverlay('{!! asset('assets/images/birlikmarket.png')  !!}', bounds).addTo(map);
        map.fitBounds(bounds);
        // mouse move detect x, y coordinates
        function mouseMove(e) {
            var tileSize = [711,473]
            try {
                console.log(e.latlng)
            }catch(error) {
                console.log(error)
            }
}
</script>
1个回答

7

在Leaflet中,当出现诸如mouseMove这样的事件时,获取鼠标的LatLng

你的方法存在一个问题,就是将事件侦听器添加到本地dom事件上。相反,应该将侦听器添加到自定义的leaflet鼠标事件上,这将使你可以访问latLng。

map.on的第一个参数是事件名称。第二个参数是回调函数,当事件发生时调用该函数。传递给此回调函数"e"的arg是代表leaflet事件的对象。在此事件上的属性之一是latlng。

将以下内容放入您的脚本标签中:

map.on('mousemove', function(e) {
    alert("Lat, Lon : " + e.latlng.lat + ", " + e.latlng.lng)
});

"mousemove" 指的是 Leaflet 鼠标事件。Leaflet 事件包含信息,如 LatLng,在本地 DOM 事件(例如 "onmousemove")中不会出现。

此外,您还可以访问鼠标事件的其他属性,例如发生事件的地图上的像素坐标。有关更多信息,请参见 这里

请记住,您可以轻松将此事件更改为“click”,并仅在用户单击地图时警报纬度和经度坐标。

查看此工作示例:http://jsfiddle.net/LnzN2/684/


谢谢您的回复。我也尝试了您的回复,但是没有任何作用。 - Murat Kaya
你是否将它放在 <script> </script> 标签内,在地图初始化后的末尾? - therewillbecode
尝试更新的答案。我已将事件更改为正确的名称:mousemove。 - therewillbecode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接