Javascript 每次我调用这个函数时,旧的标记都会后退,新的标记会出现,有什么方法可以解决这个问题吗?
为上一条多段线创建了新的线串,因此每次都会有新的管线出现,但标记会后退!for循环在manuver点处创建标记Javascript 每次我调用这个函数时,旧的标记都会后退,新的标记会出现,有什么方法可以解决这个问题吗?,javascript,loops,here-api,Javascript,Loops,Here Api,为上一条多段线创建了新的线串,因此每次都会有新的管线出现,但标记会后退!for循环在manuver点处创建标记 函数addManuerTomap(路由){ var svgMarkup=“”+ '' + '', dotIcon=newh.map.Icon(svgMarkup,{anchor:{x:8,y:8}), 我 J //为每个动作添加一个标记 对于(i=0;i
函数addManuerTomap(路由){
var svgMarkup=“”+
'' +
'',
dotIcon=newh.map.Icon(svgMarkup,{anchor:{x:8,y:8}),
我
J
//为每个动作添加一个标记
对于(i=0;i
您应该从组中删除以前添加的对象
只需在方法的开头添加group.removeAll()
此外,为了获得更好的性能,您应该将创建svgMarkup
和dotIcon
的代码移出此方法
function addManueversToMap(route){
var svgMarkup = '<svg width="18" height="18" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="8" cy="8" r="8" ' +
'fill="#1b468d" stroke="white" stroke-width="1" />' +
'</svg>',
dotIcon = new H.map.Icon(svgMarkup, {anchor: {x:8, y:8}}),
i,
j;
// Add a marker for each maneuver
for (i = 0; i < route.leg.length; i += 1) {
for (j = 0; j < route.leg[i].maneuver.length; j += 1) {
// Get the next maneuver.
var maneuver = route.leg[i].maneuver[j];
// Add a marker to the maneuvers group
var marker = new H.map.Marker({
lat: maneuver.position.latitude,
lng: maneuver.position.longitude} ,
{icon: dotIcon});
marker.instruction = maneuver.instruction;
group.addObject(marker);
}
}
group.addEventListener('tap', function (evt) {
map.setCenter(evt.target.getGeometry());
openBubble(
evt.target.getGeometry(), evt.target.instruction);
}, false);
// Add the maneuvers group to the map
map.addObject(group);
}