我用 Leaflet 加载了一个地图,坐标数据是从接口拿的,但地图渲染出来了,标记点却没显示。控制台也没报错,数据明明有啊。
我试过把经纬度写死成 [39.9042, 116.4074] 也不行,是不是 marker 添加方式有问题?
fetch('/api/locations')
.then(res => res.json())
.then(data => {
data.forEach(loc => {
L.marker([loc.lat, loc.lng]).addTo(map);
});
});
首先检查地图初始化代码是不是有问题。很多时候标记点不显示是因为地图还没完全加载好就被添加了。具体来说,确保你在正确的位置调用了 marker 的 addTo 方法。
另外一种可能是数据格式不对或者值为空。在添加标记之前,最好先验证一下获取到的经纬度数据是否合法。下面是一个改进后的代码示例:
这里有几个关键点:
1. 在添加标记前检查坐标是否合法
2. 使用 parseFloat 确保数据类型正确
3. 添加失败时给出提示信息而不是直接忽略
4. 视情况调整地图中心位置(setView)
还有个容易忽略的问题是样式冲突。有时候 CSS 样式会影响标记的显示。可以临时禁用自定义样式看看是否有影响。
最后,如果还是不行,试着把地图缩放级别调整大一些,有时候标记太小不容易发现。记得调试工具里查看元素树,确认标记确实被添加了。
这种问题挺烦人的,但只要耐心排查总能找到原因。希望能帮到你。