OpenLayers缩放样式,如谷歌地图

时间:2011-02-14 15:00:51

标签: javascript google-maps openlayers

GoogleMaps中,当用户使用鼠标滚轮放大/缩小时,光标下的点保持不变(其坐标),但OpenLayers地图有不同的方法 - 当地图的缩放中心不变时。可以在GoogleMaps地图中使用OpenLayers缩放样式吗?

编辑: 实际上我的OpenLayers中的当前行为是当我放大光标下的某个位置时,它会移动该位置到下一个缩放级别的地图中心。可能这是与我的地图特定设置(如投影)相关的一些问题。

2 个答案:

答案 0 :(得分:2)

我猜您正在使用OpenLayers.Control.MouseDefaults控件进行导航。好吧,你不应该,因为这个控件被OpenLayers.Control.Navigation取代,并且将在OpenLayers 3.0中弃用。

快速浏览一下MouseDefaults的源代码,可以看出它确实将中心映射到光标位置:

defaultWheelDown: function(evt) {
    if (this.map.getZoom() > 0) {
        this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),
                           this.map.getZoom() - 1);
    }
},

当光标停留在同一位置时,每次放大/缩小时,地图都会居中到新位置,这会令人困惑。

OpenLayers.Control.Navigation使用与Google Maps相同的方法。 OpenStreetMap使用它,您可以看到它的工作方式与here

相同

答案 1 :(得分:1)

实际上,在OpenLayers上查看Basic Example时,似乎地图会缩放鼠标指针,就像谷歌地图一样。或者我在你的问题中遗漏了一些细节?