Leaflet GeoJSON显示

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]等等,你应该没问题.:)


Jav*_*der 6

我只是想补充一些我的观点——

只是标准混乱且矛盾的问题。

当谈论地理位置时,我们通常使用经纬度。

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)

我认为这个解释会有帮助!了解更多请点击这里