Mapbox获取新坐标后无法添加标记问题求助(附代码)
解决Mapbox点击地图添加标记失败的问题
哈哈,这个问题我一眼就瞅到症结啦!你遇到的是Mapbox新手常踩的小坑——setLngLat()方法的参数顺序搞反了!
Mapbox的坐标规则一直是「经度在前,纬度在后」,不管是初始化地图的center参数,还是设置标记位置,都得遵循这个顺序。你代码里把latitude(纬度)放在了setLngLat()的第一个参数位置,这就导致标记被放到了错误的坐标点(甚至可能超出地图可视范围,看起来就像没添加成功)。
修正后的完整代码
var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [data.Longitude, data.Latitude], // 这里也要注意!原代码顺序也反了,一并修正 zoom: 12 }); map.on('click', function (e) { var latitude = e.lngLat.lat; var longitude = e.lngLat.lng; console.log(latitude + " - " + longitude) var marker = new mapboxgl.Marker() .setLngLat([longitude, latitude]) // 核心修正:把经度放在前面 .addTo(map); });
额外提醒
初始化地图的center参数你原来写的是[data.Latitude, data.Longitude],如果你的data对象里Latitude是纬度值、Longitude是经度值,那这里的顺序也反了,我已经一起修正了,不然地图的初始中心位置也会出错哦~
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

