我创建了一个plunkr,它有一个像汽车一样的移动标记。
var olview = new ol.View({
center: [-5484111.13, -1884437.22],
zoom: 18,
minZoom: 2,
maxZoom: 20
});
var osm = new ol.source.OSM();
var lineString = new ol.geom.LineString([]);
var map = new ol.Map({
target: 'map',
view: olview,
renderer: 'canvas',
layers: [
new ol.layer.Tile({
source: osm,
opacity: 0.6
})
]
});
var car = document.getElementById('geo1');
var marker = new ol.Overlay({
positioning: 'center-center',
offset: [0, 0],
element: car,
stopEvent: false
});
map.addOverlay(marker);
var path = [
[-5484101.57, -1884475.44],
[-5484114.71, -1884432.74],
[-5484117.70, -1884416.62],
[-5484106.95, -1884392.28]
];
lineString.setCoordinates(path);
map.once('postcompose', function(event) {
console.info('postcompose');
interval = setInterval(animation, 500);
});
var i = 0, interval;
var animation = function(){
if (i == path.length){
i = 0;
}
marker.setPosition(path[i]);
i++;
};
这是用openlayers编写的,我希望它在移动时看起来很平滑。
https://github.com/terikon/marker-animate-unobtrusive
我是openlayers的初学者,有人可以帮助我吗?谢谢!
答案 0 :(得分:5)
我做了三次测试。第一个和第二个是纯ol3,最后一个是tween.js。
我使用Arc.js创建路径。
first example正在使用setInterval
。
second example正在使用window.requestAnimationFrame
。
the last与Tween.js
。
你的例子没有顺利运行,因为它只是几个坐标。
请注意,Tween.js
集成根本不是集成。这只是一个棘手的CSS操作。