gpt4 book ai didi

java - 点击 map 获取多个坐标

转载 作者:行者123 更新时间:2023-11-30 17:06:34 24 4
gpt4 key购买 nike

我在尝试在 map 上绘制两个标记并获取起点和终点坐标时遇到了一些问题。这是代码:

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);
});
}

我正在使用计数器变量来区分第一个和第二个标记。所以基本上我想做的是当第一次点击 map 时,我得到了 startLoc。然后,当第二次点击 map 时,我得到了 endLoc。在获得它们之后,我将它们作为路由方法的参数传递。

但是,使用这些代码,当我点击 map 时,它只是用坐标填充 startLoc,用 undefined 填充 endLoc,然后执行 plotBusRouteByMarker()。

有什么想法吗?

提前致谢。

最佳答案

这是因为每当您点击 map 时,“counter”变量始终为 1,因此每次都会分配 startLoc。
相反,您可以借助闭包 概念来记住如下所示的“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);
});
}

关于java - 点击 map 获取多个坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27896103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com