Leaflet GeoJSON显示

时间:2012-07-19 23:14:21

标签: 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);

正如您所看到的,它几乎复制了一个由传单提供的示例。并不起作用。我完全被这个麻烦所困扰,并且非常感谢任何帮助。

2 个答案:

答案 0 :(得分:15)

问题是在GeoJSON规范中,坐标应以[lon, lat]形式传递,而Leaflet使用[lat, lon]作为其对象。只需将其更改为[-008, 51.509]等,您应该没问题。 :)

答案 1 :(得分:3)

我只想添加一些我的观点 -

只是一个令人困惑和矛盾的标准。

在谈论地理位置时,我们通常使用Lat-long。

map.setViewl.LatLong作为输入,其中第一个坐标为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);

您可以通过修改此视图来调整视图..

map.setView(new L.LatLng(-0.09, 51.505), 13).addLayer(bingLayer);

map.setView(new L.LatLng(-008, 51.509), 13).addLayer(bingLayer);

我认为这个解释会有所帮助!!更多Click Here