0

我在图像上使用 openlayers 并希望拥有它,这样如果我一直放大并且它稍微偏向一边,它将自动居中。我有以下代码,但它不起作用。它看起来不像在捏时调用'zoomEnd',但是触发了什么事件?

在 Openayers 中是否有所有可能的事件列表?我在文档中的任何地方都找不到类似的东西..

map = new OpenLayers.Map('detailsdiv', {
    projection : 'EPSG:3785',
    units : 'm',
    fractionalZoom : true,
    eventListeners: {
        "zoomend": recenterMap
    },
    maxResolution: Math.pow(2, graphic.numberOfTiers - 1),
    numZoomLevels : graphic.numberOfTiers,
    controls: [
         new OpenLayers.Control.TouchNavigation({
                dragPanOptions: {
                    enableKinetic: true
                }
         })
    ]
});

===============================

function recenterMap(){
    if (!map.centered){
        if (map.getZoom() == 0){
            map.centered = true;
            map.zoomToMaxExtent();
            map.zoomTo(0);
        } else {

        }
    }
}
4

1 回答 1

1

我相信你最好使用 moveend 事件。当拖动、平移或缩放结束时它会被触发……这样会更好。此外,这里是一个事件列表: http ://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.events

您可能还想在您的 centererMap() 函数中使用 map.setCenter()

于 2013-03-14T08:01:20.193 回答