Openlayers初始范围

时间:2012-10-07 07:51:59

标签: javascript openlayers

根据OpenLayers文档,构造函数OpenLayers.Map()允许附加属性 extent ,这是“地图的初始范围”({ {3}})。

然而,我无法让它产生任何影响。我知道我可以通过在构建地图后调用 .zoomToExtent() 来设置初始范围。但是我想使用这个 extent 属性,因为我在 eventListeners 属性中设置了一个 zoomend 事件,但是不希望它用初始调用 .zoomToExtent()。有没有人知道如何使用这个范围属性?

这是无效的代码

map = new OpenLayers.Map('map',{
        extent: bounds,
        layers: [osmLayer,vectorLayer],
        projection: "EPSG:900913",
        eventListeners: {
            zoomend: function() {
                //..zoomend event listener code
            }
        }
    });

在上面的例子中:

  • bounds 是有效的 OpenLayers.Bounds 对象
  • osmLayer vectorLayer 是有效的 OpenLayers.Layer 对象,其中 osmLayer 是基础层。

上面的代码会发生这样的情况:地图已完全缩小(事实上你实际上看不到任何东西),任何平移的尝试都会导致错误被抛出。要将地图映射到正确的状态,用户必须放大,然后再次平移,您可以看到地图。

2 个答案:

答案 0 :(得分:0)

我担心我不确定如何使您列出的代码有效,但以下替代方案对我有用:

map = new OpenLayers.Map('map',{projection: new OpenLayers.Projection("EPSG:4326")});

//ADD A BUNCH OF LAYERS AND SUCH HERE

//Set map center to this location at this zoom level
map.setCenter(new OpenLayers.LonLat(-93.9196,45.7326),5);

作为最后的手段,您可以在缩放功能的开头添加一行:

if(!map_ready) return;

然后在适当的时间将变量map_ready设置为true。

答案 1 :(得分:0)

我遇到了同样的问题。

文档is there probably by mistake中提到的“范围”选项。它不存在。我检查了源代码,看不到任何代码处理这样的选项。我联系了作者,他已经创建了一个pull request,用于从文档中删除此选项。