从OpenLayers.Layer.Vector对象获取GeoJson属性时遇到问题



我曾试图从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,我可以通过打印vLayerfirebug console中看到这一点,这是我的JSON文件。

Openlayers提供了以下功能:

  • http://dev.openlayers.org/docs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.getDataExtent

然后使用map.getZoomForExtentmap.panTo

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

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

它对我来说很好。

相关内容

  • 没有找到相关文章

最新更新