ol.animation.pan不起作用

时间:2015-04-21 17:44:54

标签: openlayers-3

我试图动画我的地图,但我遇到了问题。我已经看过openlayers 3的例子但是我不得不改变一些东西以使它们适应我的网络,现在它不起作用。这是我的代码:

var name_button_see_pozo = ".verpozo"; // Class

$(document).on('ready',function(){
    $(name_button_see_pozo).on('click',function(e){
        e.preventDefault();

        // take coordinates and zoom from url:
        if (window.location.hash !== '') {
            var hash = window.location.hash.replace('#', '');
            var parts = hash.split(';');
            if (parts.length === 3) {
                zoom = parseInt(parts[0], 10);
                center = [
                    parseFloat(parts[1]),
                    parseFloat(parts[2])
                ];
            }
        }

        var view = new ol.View({
            center: center,
            zoom: zoom
        });

        var pan = ol.animation.pan({
            duration: 2000,
            source: /** @type {ol.Coordinate} */ (view.getCenter())
        });
        map.beforeRender(pan);

        var utm = "+proj=utm +zone=30";
        var wgs84 = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
        var coorx = 728404.43590;
        var coory = 4371594.36768;
        var lonlat= proj4(utm,wgs84,[coorx, coory]);        
        var center_pozo = ol.proj.transform([lonlat[0], lonlat[1]], 'EPSG:4326', 'EPSG:3857');

        view.setCenter(center_pozo);
    });
});

事实上,我从网址获取缩放和坐标(EPSG:3857)并将其设置为地图的中心(我想从那里开始动画)。然后,我放了平移方法,最后,我计算了我想要完成动画的点的坐标(center_pozo)。

我不知道为什么它不起作用。我已经在console.log中看到了变量的值,并且一切正确。如果我点击按钮,它就不会做任何事情。

有谁知道如何解决这个问题?我做错了什么?

非常感谢!

1 个答案:

答案 0 :(得分:3)

抱歉,我没有权利只添加评论。您的代码似乎很好,请参阅此jsfiddle

验证你的proj4版本或者起始坐标和最终坐标是否真的不同。

  var pan = ol.animation.pan({
        duration: 2000,
        source: /** @type {ol.Coordinate} */ (view.getCenter())
      });
      map.beforeRender(pan);

      var utm = "+proj=utm +zone=30";
      var wgs84 = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
      var coorx = 728404.43590;
      var coory = 4371594.36768;
      var lonlat= proj4(utm,wgs84,[coorx, coory]);        
      var center_pozo = ol.proj.transform([lonlat[0], lonlat[1]], 'EPSG:4326', 'EPSG:3857');
      view.setCenter(center_pozo);