1

マップにロードする必要があるレイヤーがたくさんあるので、それぞれを個別にロードする代わりに、json ファイルと Openlayers.Request.GET を使用してロードしようとしましたが、コードを完成させる方法がわかりません。

json ファイル:

{
"layers": [
{ "title":"Client Manholes" , "url":"./mh_file.geojson" , "style":"mh_style"}, 
{ "title":"Client Pipe" , "url":"./pipe_file.geojson" , "style":"pipe_style"}, 
{ "title":"Client Parcels" , "url":"./parcel_file.geojson" , "style":"parcel_style"}
]
}

JavaScript:

var request = OpenLayers.Request.GET({
    url: "http://domain.com/layers.json",
    callback: handler
});

function handler(request) {
    //alert (request);
    var  response = json.read (request.responseText);
    //loop thru each layer
    for each (var layer in request) {
                //load layer
                layer = new OpenLayers.Layer.Vector(layer_title, {
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: layer_url,
                        format: new OpenLayers.Format.GeoJSON({
                        })
                    }),
                    //...load stylemap
                });
                //turn layer off
                layer.setVisibility(false);
            }

        };
4

1 に答える 1

1

修正しました!

function handler (request) {
            var  json = new  OpenLayers.Format.JSON ();
            var  response = json.read (request.responseText);
            //console.log(response); 
            var layer_data = response.layers
            for (var i in layer_data) {
                var layer_name = layer_data[i].title;
                //alert(layer_name);
                var layer_url = layer_data[i].url;
                //alert(layer_url);
                var layer_style = layer_data[i].style;
                //alert (layer_style);
                layer = new OpenLayers.Layer.Vector(layer_name, {
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: layer_url,
                        format: new OpenLayers.Format.GeoJSON({
                        })
                    }),
                    //...load stylemap
                });
                //turn layer off
                layer.styleMap = mh_style_map;
                layer.setVisibility(false);
                map.addLayer(layer);
            }
            //alert (response);
        };
于 2013-09-04T13:15:23.947 に答える