点击地图获取多个坐标
Map on click to get multiple coordinates
我在尝试在地图上绘制两个标记并获取起点和终点坐标时遇到了一些问题。这是代码:
function showBusFilter(){
map.on("click", function (evt) {
var counter = 1;
if(counter == 1){
var startLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter++;
}
else if(counter == 2){
var endLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter = 1;
}
console.log(startLoc);
console.log(endLoc);
plotBusRouteByMarker(startLoc, endLoc);
});
}
我正在使用计数器变量来区分第一个和第二个标记。所以基本上我想做的是当第一次点击地图时,我得到了 startLoc。然后,当第二次点击地图时,我得到了 endLoc。得到它们之后,我将它们作为路由方法的参数传递。
但是,使用这些代码,当我点击地图时,它只是用坐标填充 startLoc,用 undefined 填充 endLoc,然后执行 plotBusRouteByMarker()。
有什么想法吗?
提前致谢。
这是因为每当您点击地图时,“counter
”变量始终为 1,因此每次都会分配 startLoc。
相反,您可以借助 closure 概念来记住下面的“counter
”
var counter = 0;
function showBusFilter() {
map.on("click", function(evt) {//anonymous fn
counter ++ ;//now this will point to global counter and hence will not claimed by GC after fn execution
if(counter === 1) {
var startLoc = (evt.mapPoint.x, evt.mapPoint.y);
} else if(counter === 2) {
var endLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter = 0;
}
plotBusRouteByMarker(startLoc, endLoc);
});
}
我在尝试在地图上绘制两个标记并获取起点和终点坐标时遇到了一些问题。这是代码:
function showBusFilter(){
map.on("click", function (evt) {
var counter = 1;
if(counter == 1){
var startLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter++;
}
else if(counter == 2){
var endLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter = 1;
}
console.log(startLoc);
console.log(endLoc);
plotBusRouteByMarker(startLoc, endLoc);
});
}
我正在使用计数器变量来区分第一个和第二个标记。所以基本上我想做的是当第一次点击地图时,我得到了 startLoc。然后,当第二次点击地图时,我得到了 endLoc。得到它们之后,我将它们作为路由方法的参数传递。
但是,使用这些代码,当我点击地图时,它只是用坐标填充 startLoc,用 undefined 填充 endLoc,然后执行 plotBusRouteByMarker()。
有什么想法吗?
提前致谢。
这是因为每当您点击地图时,“counter
”变量始终为 1,因此每次都会分配 startLoc。
相反,您可以借助 closure 概念来记住下面的“counter
”
var counter = 0;
function showBusFilter() {
map.on("click", function(evt) {//anonymous fn
counter ++ ;//now this will point to global counter and hence will not claimed by GC after fn execution
if(counter === 1) {
var startLoc = (evt.mapPoint.x, evt.mapPoint.y);
} else if(counter === 2) {
var endLoc = (evt.mapPoint.x, evt.mapPoint.y);
counter = 0;
}
plotBusRouteByMarker(startLoc, endLoc);
});
}