Openlayers动画更改起点

Openlayers动画更改起点,openlayers,Openlayers,有人能建议我如何将示例上的动画更改为从端点(多段线的端点)开始,而不是从起点开始吗?我已尝试更改以下代码: var i = 0, interval; var animation = function(){ if(i == path.length){ i = 4; } marker.setPosition(path[i]); i++; }; 下面是小提琴:你可以这样做 var i = path.length - 1, interval; v

有人能建议我如何将示例上的动画更改为从端点(多段线的端点)开始,而不是从起点开始吗?我已尝试更改以下代码:

var i = 0, interval;
var animation = function(){

    if(i == path.length){
        i = 4;
    }

    marker.setPosition(path[i]);
    i++;
};

下面是小提琴:

你可以这样做

var i = path.length - 1,
  interval;
var animation = function() {

  if (i == -1) {
    i = path.length - 1;
  }

  marker.setPosition(path[i]);
  i--;
};
i
设置为
path.length-1
并递减

var
sourceFeatures=new ol.source.Vector(),
layerFeatures=新ol.layer.Vector({
资料来源:sourceFeatures
});
var lineString=new ol.geom.lineString([]);
var layerRoute=新ol.layer.Vector({
来源:新ol.source.Vector({
特点:[
新ol.功能({
几何图形:线条字符串
})
]
}),
风格:[
新ol风格({
笔划:新的ol风格笔划({
宽度:3,
颜色:“rgba(0,0,0,1)”,
划线:[.1,5]
}),
zIndex:2
})
],
updateWhileAnimating:true
});
var map=新ol.map({
目标:“地图”,
视图:新ol.view({
中心:[-5483805.05,-1884105.39],
缩放:16,
minZoom:2,
最大缩放:20
}),
图层:[
新ol.layer.Tile({
source:new ol.source.OSM(),
不透明度:0.85
}),
layerRoute、layerFeatures
]
});
var markerre=document.getElementById('geo-marker');
var标记=新的ol.Overlay({
定位:'中心',
偏移量:[0,0],
元素:马克雷尔,
stopEvent:false
});
添加覆盖图(标记);
变量
填充=新的ol.style.fill({
颜色:“rgba(255255,1)”
}),
笔划=新的ol.style.stroke({
颜色:“rgba(0,0,0,1)”
}),
样式1=[
新ol风格({
图片:新ol.style.Icon(({
比例:.7,
不透明度:1,
旋转视图:false,
锚定:[0.5,1],
主播:“分数”,
固定单位:'分数',
src:'//cdn.rawgit.com/jonataswalker/map-utils/'+'master/images/marker.png'
})),
zIndex:5
}),
新ol风格({
图片:新ol.style.Circle({
半径:6,
填充:填充,
笔划:笔划
}),
zIndex:4
})
];
//模拟路径
变量路径=[
[-12660, 6711103],
[-9070, 6713576],
[-9755, 6713276],
[-9755, 6713776],
[-9755, 6714976]
];
变量
功能\启动=新的ol.功能({
几何体:新的ol.geom.Point(路径[0])
}),
特征=新的ol.特征({
几何体:新的ol.geom.Point(路径[路径长度-1])
});
功能_开始设置样式(样式1);
特征_end.setStyle(样式1);
addFeatures([feature\u start,feature\u end]);
lineString.setCoordinates(路径);
//启动动画
map.once('postcompose',函数(事件){
间隔=设置间隔(动画,750);
});
var i=路径长度-1,
间隔
var animation=function(){
如果(i==-1){
i=路径长度-1;
}
设置位置(路径[i]);
我--;
};
map.getView().fit(lineString.getExtent())
html,
身体,
#地图{
宽度:100%;
身高:100%;
溢出:隐藏;
}
#地理标记{
宽度:10px;
高度:10px;
边框:1px实心#088;
边界半径:5px;
背景色:#0b968f;
不透明度:0.8;
}


谢谢,太好了。最后一个问题,如何将开始和结束更改为不同的图标?更改style1的图像图标源。如果希望开始标记和结束标记使用不同的图标,请创建两种不同的样式并进行相应设置。请参考以下链接:如果您想根据当前缩放级别管理图标大小,请查看此链接:谢谢您的帮助。