咨询:Leaflet中GeoJSON与Polyline用相同坐标为何位置不同
Leaflet Polyline 位置偏移问题解决办法
嘿,我帮你排查出问题啦!这个是Leaflet新手很容易踩的一个小坑——坐标顺序搞混了。
问题根源
Leaflet里两种坐标体系的顺序是不一样的:
- GeoJSON 遵循标准的OGC规范,坐标顺序是 [经度(longitude), 纬度(latitude)]
- Leaflet 原生的
Polyline/Marker等类,要求的坐标顺序是 [纬度(latitude), 经度(longitude)]
你写的Polyline代码里,用了和GeoJSON一样的[lon, lat]顺序,导致系统把纬度当成了经度、经度当成了纬度,自然就显示到错误的位置了。
修正后的代码
你原来的Polyline代码:
L.polyline([[-73.99157, 40.73243], [-73.99157, 40.75243]], {color: 'black'}).addTo(map);
只需要把每一组坐标的顺序调换,改成[lat, lon]就可以了:
L.polyline([[40.73243, -73.99157], [40.75243, -73.99157]], {color: 'black'}).addTo(map);
验证效果
修正之后,这条黑色的Polyline就会和另外两条GeoJSON的线完全重合啦,你可以试试~
内容的提问来源于stack exchange,提问作者tsu
相关产品推荐
相关产品推荐

