我想对原有的规划功能上修改一下。于是在 map 初始化后对 DOM 进行操作。 大概思路是在地图上先点击一个地点作为起始地点(或者是倒数第二次点击),记录为 routePath的起始点参数。用的是map.on('click');
同样还有一个用来记录目的地的坐标的函数。用的是 map.on('shopclick facilityclick)
然后把原先已经生成的去那里图标 ,删除,在添加一个一样的,然后在新添加的标签元素添加 onclick 事件。
这个新添加的击事件就是用来调用 routePath。 问题是在调用 routePath 后,回调的成功函数信息会在控制栏里正确输出。
最后贴一下代码。
map.once('mapready',function() {
var stopSF = {},startUG = {},place= [],stopplace = [];
map.on('click',clickSomeWhere);
function clickSomeWhere(e) {
place.push(e.latlng.lat);
place.push(e.latlng.lng);
if (place.length>2){
startUG.x = place[place.length - 4];
startUG.y = place[place.length - 3];
startUG.floor = map.getFloor();
}else {
startUG.x = place[1];
startUG.y = place[0];
startUG.floor = map.getFloor();
}
return startUG;
}
map.on('shopclick facilityclick ',getTheMark);
function getTheMark() {
setTimeout(function(){
if (document.querySelector('span.c-d-popimg')!=null)
{
const gosButton = document.querySelector('span.c-d-popimg');
gosButton.remove();
}
var poptitle = document.querySelector('div.c-d-popdiv');
var spanimg = document.createElement('span');
spanimg.setAttribute('class','ss');
spanimg.innerHTML = '<img title="\u53bb\u8fd9\u91cc" src="" >'
poptitle.appendChild(spanimg);
spanimg.onclick = function () {
function sucessback() {
console.log('ok');
}
function errback() {
console.log('error');
}
if (place.length<=2){
alert('please choose a place');
}
map.routePath(startUG,stopSF,sucessback,errback,{showTip:false});
};
},200);
}
map.on('shopclick facilityclick',clickSomeShop);
function clickSomeShop(e) {
const shopx = (e[["centroid"][0]][0]);
stopplace.push(shopx);
const shopy = (e[["centroid"][0]][1]);
stopplace.push(shopy);
stopSF.x = (stopplace[stopplace.length-2]);
stopSF.y = (stopplace[stopplace.length-1]);
stopSF.floor = map.getFloor();
return stopSF;
}
});
|