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

ポイントをいくつか追加したいだけです-

紛らわしく矛盾した基準の問題です。

地理的な場所について話すときは、通常、緯度経度を使用します。

は入力としてmap.setViewaを受け取りl.LatLongます。ここで、最初の座標は aLatitudeで、2 番目の座標は ですLongitude

例: - したがって、必要なときに52.23N, 4.97E渡す[52.23943, 4.97599]

GeoJSON 標準では、任意のポイントについて、最初のパラメーターは でありX Coordinate (i.e. Longitude)、2 番目のパラメーターはY coordinate (i.e. Latitude);であると規定されています。

したがって、必要な場合51.505N, 0.09EGeoJSON、渡す必要があります [-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 に答える