绘制动画openlayers线条字符串路径
Drawing animated openlayers linestring path
我在http://jerusalem.com/map#/tour/the_way_of_the_cross/location/abu_jafar,有人知道如何使用openlayers在绘制的点路径上制作类似的动画吗?
下面的小提琴演奏线弦http://jsfiddle.net/pwuVz/58/但我需要的是能够动画字符串本身,这样字符串就不会被直接绘制。
var map = new OpenLayers.Map( 'map', {theme:null,
controls:[new OpenLayers.Control.Navigation()]} );
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: 'basic'} );
map.addLayer(layer);
map.setCenter([3, 49], 5);
var startPt=new OpenLayers.Geometry.Point( 2, 45);
var endPt=new OpenLayers.Geometry.Point(7,55);
//make the line:
var line=new OpenLayers.Geometry.LineString([startPt, endPt]);
//style
var style={strokeColor:"#0500bd", strokeWidth:15, strokeOpacity: 0.5, strokeColor: '#0000ff'};
//make vector
var fea=new OpenLayers.Feature.Vector(line, {}, style);
//make vectorLayer
var vec= new OpenLayers.Layer.Vector();
//add the feature
vec.addFeatures([fea]);
//add to map
map.addLayer(vec);
setTimeout(function() {
var startPt=new OpenLayers.Geometry.Point( 7, 55);
var endPt=new OpenLayers.Geometry.Point(13,52);
//make the line:
var line=new OpenLayers.Geometry.LineString([startPt, endPt]);
//style
var style={strokeColor:"#0500bd", strokeWidth:15, strokeOpacity: 0.5, strokeColor: '#0000ff'};
//make vector
var fea=new OpenLayers.Feature.Vector(line, {}, style);
//make vectorLayer
var vec= new OpenLayers.Layer.Vector();
//add the feature
vec.addFeatures([fea]);
//add to map
map.addLayer(vec);
}, 2000);
您可以通过一次只绘制线的一部分来设置它的动画。这里有一种方法可以做到:
function drawAnimatedLine(startPt, endPt, style, steps, time, fn) {
var directionX = (endPt.x - startPt.x) / steps;
var directionY = (endPt.y - startPt.y) / steps;
var i = 0;
var prevLayer;
var ivlDraw = setInterval(function () {
if (i > steps) {
clearInterval(ivlDraw);
if (fn) fn();
return;
}
var newEndPt = new OpenLayers.Geometry.Point(startPt.x + i * directionX, startPt.y + i * directionY);
var line = new OpenLayers.Geometry.LineString([startPt, newEndPt]);
var fea = new OpenLayers.Feature.Vector(line, {}, style);
var vec = new OpenLayers.Layer.Vector();
vec.addFeatures([fea]);
map.addLayer(vec);
if(prevLayer) map.removeLayer(prevLayer);
prevLayer = vec;
i++;
}, time / steps);
}
time
参数指定希望动画持续的时间(以毫秒为单位),steps
参数指定要将动画划分为多少步。fn
是一个回调,将在动画完成时执行。
这里有一个jsFiddle演示来演示这一点。
相关文章:
- 未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属性
- 如何将字符串附加到对象中'路径'在Javascript中
- 从javascript中的字符串路径获取文件名
- 从包含密钥路径的字符串中获取json值
- 绘制动画openlayers线条字符串路径
- 区分路径字符串和标记字符串
- 从路径字符串 - Javascript 获取所有父路径
- 通过document.location以javascript中的字符串形式传递文件路径
- 按匹配值对字符串进行分组(字符串是链接路径)
- 正则表达式,从路径中提取子字符串
- 使用 Node.js,如何将随机字符串路径重定向到主页
- 匹配不带查询字符串的 URL 路径
- 更少的js modifyVars不适用于字符串路径
- 框架中的实用程序,用于更轻松地定义 SVG 路径字符串
- 拆分文件夹路径的字符串
- 通过点语法字符串路径访问对象
- 将字符串路径数组返回到对象中的每个深层属性
- 使用javascript修改字符串路径
- Javascript对象值从字符串路径
- 使用 HTML 5 文件系统 API 从字符串路径读取文件