2

我遇到了一个任务,需要使用带有 geojson 的传单 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);

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

4

2 回答 2

17

问题是在GeoJSON规范中,坐标应该在表单中传递,[lon, lat]而 Leaflet[lat, lon]用于其对象。只需将其更改为[-008, 51.509]等,就可以了。:)

于 2012-07-30T21:24:03.683 回答
5

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

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

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

map.setViewal.LatLong作为输入,其中第一个坐标是 a Latitude,第二个是Longitude

示例:-因此,当您需要时52.23N, 4.97E,您可以通过[52.23943, 4.97599]

GeoJSON 标准规定,对于任何点,第一个参数是 the 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);

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

于 2014-04-29T06:44:56.033 回答