我试图动画我的地图,但我遇到了问题。我已经看过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中看到了变量的值,并且一切正确。如果我点击按钮,它就不会做任何事情。
有谁知道如何解决这个问题?我做错了什么?
非常感谢!
答案 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);