点击 Mapbox GL JS 显示 Lat Lng 坐标

Posted

技术标签:

【中文标题】点击 Mapbox GL JS 显示 Lat Lng 坐标【英文标题】:Display Lat Lng Coordinates on click on Mapbox GL JS 【发布时间】:2020-07-29 16:59:06 【问题描述】:

我正在尝试让我的地图框显示坐标like this Google Map example,并在点击时弹出经纬度坐标。我得到的最接近的是获得一个可拖动的标记,它在地图的左下方显示坐标,如果我尝试了 onclick 功能,地图就会变成空白。如何让坐标在点击时显示为弹出窗口?

var marker = new mapboxgl.Marker(
        draggable: true
    )
    .setLngLat([101.967, 35.431])
    .addTo(map);

function onDragEnd() 
    var lngLat = marker.getLngLat();

    coordinates.style.display = 'block';
    coordinates.innerhtml =
        'Longitude: ' + lngLat.lng + '<br />Latitude: ' + lngLat.lat;


marker.on('dragend', onDragEnd);

我有 .coordinates 的 css 样式,以便在拖动标记时它们显示在屏幕的左下方。 我知道这是一个简单的问题,但我对 mapbox 和一般编码完全陌生。将不胜感激任何帮助!谢谢!

【问题讨论】:

【参考方案1】:

我认为您正在寻找的是 Mapbox Popup

我已经草拟了一个速写fiddle on how to create a popup with the coordinates clicked,这里有相关的js代码:

mapboxgl.accessToken = 'PUT HERE YOUR TOKEN';
var map = new mapboxgl.Map(
  container: 'map',
  style: 'mapbox://styles/mapbox/streets-v11',
  center: [-122.486052, 37.830348],
  zoom: 14
);
map.on('style.load', function() 
  map.on('click', function(e) 
    var coordinates = e.lngLat;
    new mapboxgl.Popup()
      .setLngLat(coordinates)
      .setHTML('you clicked here: <br/>' + coordinates)
      .addTo(map);
  );
);

【讨论】:

这太棒了!工作就像一个魅力,非常感谢! 很高兴为您提供帮助!如果它解决了您的问题,请将其标记为已接受答案,这样它也将帮助其他有相同问题的用户知道它是正确的解决方案 非常好。以及如何将这些坐标放入输入表单中?比如在Lat输入中,插入纬度值,在Lng输入中,插入地图点击时的经度值? @MichelXavier 我建议您就该主题提出一个新问题,因为它绝对是一个不同的问题。 @MichelXavier,我刚刚回答了你的问题。

以上是关于点击 Mapbox GL JS 显示 Lat Lng 坐标的主要内容,如果未能解决你的问题,请参考以下文章

mapbox GL js中线串周围的可点击区域

MapBox GL JS 标记偏移

如何在 mapbox-gl-js 的标记上添加“点击”侦听器

在mapbox gl js中的图层上注册点击事件时如何操作事件冒泡

Mapbox GL JS:如果单击标记,则忽略地图单击事件

我可以像在(mapbox-gl-js 文档)中那样使用 react-map-gl 添加 GeoJSON 行吗?