2

この例を実装したいhttp://api.geoext.org/1.1/examples/feature-grid.html geoext と openlayers で構成され、機能グリッドには geojson ファイルが入力されます

私の開発では、utm 形式の geojson ファイルがあります。これは、ファイルの単一の機能です (座標は utm です)。

{"geometry": {"type": "Point", "coordinates": [7535169.36, 402844.172]}, "type": "Feature", "properties": {"NOMBRE": "LA VICTORIA", "CODIGO": "1702"}, "id": "1702"}

コード内のポイントを表示しようとしましたが、何も表示されません。これが私のコードです

// create feature store, binding it to the vector layer
            store = new GeoExt.data.FeatureStore({
                layer: vecCiudades,
                fields: [
                    { name: 'NOMBRE' },
                    { name: 'CODIGO' }
                ],
                proxy: new GeoExt.data.ProtocolProxy({
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: "data/summits.json",
                        format: new OpenLayers.Format.GeoJSON({
                            ignoreExtraDims: true,
                            internalProjection: new OpenLayers.Projection("EPSG:900913"),
                            externalProjection: new OpenLayers.Projection("EPSG:4326")
                        })
                    })
                }),
                autoLoad: true
            });

ご覧のとおり、フィーチャ ストアの内部投影と外部投影を指定しようとしました。実装は上記のリンクの例のように見えますが、都市を選択すると、マップが間違った場所に配置されます (場所が表示されます)。南極の近くですが、南アメリカの近くでなければなりません)

前もって感謝します

4

1 に答える 1

0

どのような理由で FeatureStore ..? 次のようにレイヤーを定義するだけです:

var vecCiudades = new OpenLayers.Layer.Vector('MyLayer', {
    strategies:[new OpenLayers.Strategy.BBOX()],
    isBaseLayer:false,
    projection:new OpenLayers.Projection("EPSG:900913"),
    styleMap:new OpenLayers.StyleMap(null),
    transitionEffect:'resize',
    protocol:new OpenLayers.Protocol.HTTP({
        url: "data/summits.json",
        format:new OpenLayers.Format.GeoJSON({
            ignoreExtraDims:true
        }),
        readWithPOST:false,
        updateWithPOST:false,
        srsInBBOX:true
    })
});

次のイベントもマップに登録します。

map.events.register("moveend", this, function (e) {
    vecCiudades.refresh({force:true});
});

これにより、移動またはズームされたマップがいつでも GeoJSON を再読み込みし、リクエストには可視領域の境界ボックスが含まれるため、すべてではなく可視になるフィーチャのみを送信できます。

于 2012-07-07T21:34:47.830 に答える