0

私はおかしくなりそうだ。OpenLayers 2.10 ビギナーズ ガイドの例を再現しようとしています。ここでは、json ファイルに保存されたフィーチャを表示し、マップにフィーチャを追加してファイルに保存しようとしています。

var map;    
function init(){
            map = new OpenLayers.Map('map');
            var options = {numZoomLevels: 3}
            var floorplan = new OpenLayers.Layer.Image(
            'Floorplan Map',
            'temp_photos/sample-floor-plan.jpg',
            new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
            new OpenLayers.Size(580, 288),
            options
        );
            var roomPolygonLayer = new OpenLayers.Layer.Vector('Rooms', {
                protocol: new OpenLayers.Protocol.HTTP({
                    url: "myFloorPlanData.json", 
                    format: new OpenLayers.Format.GeoJSON({})}),
                strategies: [new OpenLayers.Strategy.Fixed(), new OpenLayers.Strategy.Save()]
            });

            map.addLayers([floorplan, roomPolygonLayer]);
            map.zoomToMaxExtent();
            map.addControl(new OpenLayers.Control.EditingToolbar(roomPolygonLayer));

            map.layers[1].onFeatureInsert = function(feature){
                alert("feature id: "+feature.id);
                alert("feature geometry: "+ feature.geometry);
            };
        }

これまでのところ、マップが表示され、マップ上にベクトルを描画できますが、json ファイルにある 2 つのポイントを表示することを拒否し、描画した新しいポイントも保存します。

{
"type": "FeatureCollection",
"features": [
    {"type":"Feature","properties":{}, "geometry":{"type":"Point", "coordinates":[5, 63]}},
    {"type":"Feature","properties":{}, "geometry":{"type":"Point", "coordinates":[-48, 27]}}
]

}

json ファイルは jsp ファイルと同じフォルダーにあり、サーバー上でプロジェクトを実行しています。

4

1 に答える 1

0

OpenLayers.Strategy.Save は、json ファイルを直接変更できません。WFS-T プロトコルを実装する Web サービスを介してのみ機能します。

Geoserverなど、WFS-T をサポートするソフトウェアをインストールできます。その後、OpenLayers アプリケーションで OpenLayers.Strategy.Save を使用できます。

もう 1 つのオプションは、json ファイルを変更するカスタム Web サービスを作成することです。次に、クリックするとカスタム Web サービスを呼び出す、ある種の保存ボタンを作成します。

于 2012-05-24T15:11:53.327 に答える