las*_*rte 2 javascript geojson leaflet
我遇到了一个任务,需要使用带有geojson的leaflet js库作为数据存储.几乎立即遇到问题:从geojson对象创建的多边形不会显示在地图上.而由本地传单方法创建的多边形 - 完美地工作.
这是我的代码:
var map = new L.Map('map');
var bingLayer = new L.BingLayer('AhVaalRWmmprMAMHj6lw18ALO-iVnIGzvkq7gYAX3U_bisCT8Q_lgGV25YOa0kiV', 'Aerial');
map.setView(new L.LatLng(51.505, -0.09), 13).addLayer(bingLayer);
var polygon = {
"type": "Feature",
"properties": {
"style": {
"color": "#004070",
"weight": 4,
"opacity": 1
}
},
"geometry": {
"type": "Polygon",
"coordinates": [[
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047],
[51.509, -0.08]
]]
}
};
var geojsonLayer = new L.GeoJSON(polygon);
map.addLayer(geojsonLayer);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它几乎复制了一个由传单提供的示例.并不起作用.我完全被这个麻烦所困扰,并且非常感谢任何帮助.
Mou*_*ner 16
问题是在GeoJSONspec中,[lon, lat]当Leaflet [lat, lon]用于其对象时,坐标应该在表单中传递.只需将其更改为[-008, 51.509]等等,你应该没问题.:)
我只是想补充一些我的观点——
只是标准混乱且矛盾的问题。
当谈论地理位置时,我们通常使用经纬度。
map.setView以 a作为l.LatLong输入,其中第一个坐标是 a Latitude,第二个坐标是Longitude。
示例:- 因此,当您需要时52.23N, 4.97E,您可以传入[52.23943, 4.97599]
GeoJSON 标准规定,对于任何点,第一个参数是X Coordinate (i.e. Longitude),第二个参数是Y coordinate (i.e. Latitude);
因此,当你想要51.505N, 0.09E进入时GeoJSON,你需要通过 [-0.09, 51.505]
var map = new L.Map('map');
var bingLayer = new L.BingLayer('AhVaalRWmmprMAMHj6lw18ALO-iVnIGzvkq7gYAX3U_bisCT8Q_lgGV25YOa0kiV', 'Aerial');
map.setView(new L.LatLng(-0.09, 51.505), 13).addLayer(bingLayer);
var polygon = {
"type": "Feature",
"properties": {
"style": {
"color": "#004070",
"weight": 4,
"opacity": 1
}
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047],
[51.509, -0.08]
]
]
}
};
var geojsonLayer = new L.GeoJSON(polygon);
map.addLayer(geojsonLayer);
Run Code Online (Sandbox Code Playgroud)
您可以通过修改此来调整您的视图。
map.setView(new L.LatLng(-0.09, 51.505), 13).addLayer(bingLayer);
Run Code Online (Sandbox Code Playgroud)
到
map.setView(new L.LatLng(-008, 51.509), 13).addLayer(bingLayer);
Run Code Online (Sandbox Code Playgroud)
我认为这个解释会有帮助!了解更多请点击这里
| 归档时间: |
|
| 查看次数: |
8833 次 |
| 最近记录: |