从OpenLayers.Layer.Vector对象获取GeoJson属性时遇到麻烦

时间:2013-02-13 13:14:16

标签: maps openlayers

我已经尝试过从SE中提出的问题中解决问题但是无法通过阅读这些问题解决问题所以,将其作为单独的问题发布。

我正在使用以下代码

创建marker图层
mLayer = new OpenLayers.Layer.Vector(layerName, {
        projection: map.displayProjection,
        extractAttributes: true,
        styleMap: new OpenLayers.StyleMap({'default' : Lstyle}),
        strategies: [new OpenLayers.Strategy.Fixed()],
        protocol: new OpenLayers.Protocol.HTTP({
            url: getURL,
            format: new OpenLayers.Format.GeoJSON()
        })
    });

我的任务是计算marker坐标的平均值并将其设置为地图的中心,因为我想从mLayer对象获取坐标。标记在地图上显示正常,但当我在控制台中打印mLayer.features.length时显示0,但features的大小为10,我可以在{{1通过打印firebug consolethis是我的JSON文件。

2 个答案:

答案 0 :(得分:1)

Openlayers提供此功能:

然后使用map.getZoomForExtentmap.panTo

答案 1 :(得分:0)

要将地图中心设置为markers mid pointChristophe Roussy中建议的comments在某种程度上是正确的,但是他的代码存在问题,代码将在layer之前执行完成下载到浏览器,所以我们必须检查图层是否完成如下

layer.events.register('loadend', layer, function(evt){map.zoomToExtent(layer.getDataExtent() )} )

它对我来说很好。