java - 点击 map 获取多个坐标

标签 java javascript maps arcgis esri

我在尝试在 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/

相关文章:

javascript - 通过http传输大量json

android - 找到 mapsforge for android 的例子

javascript - 检测页面上是否显示警报或确认

java - 找不到 'java.lang.StackTraceElement' 的转换器

java - 我正在尝试开发 Web 服务 REST 应用程序。我不知道如何解决以下错误

java - 尝试调暗 Activity 背景时 Android getWindow() 未定义

javascript - 在 Promise 中调用 setState 时 React Jest 测试失败

java - 是否有关于 SwingX-WS 1.1 及其开发状态的任何 [un] 官方信息?

java - 如何按 LatLng ArrayList 中的值顺序对 LatLng、String 的 Map 进行排序

java - 使用 apache dbcp 在 JDBC 中实现连接池