我正在制作一个应用程序,可以实时更新用户的位置和路径,并将其显示在Google map 上.我有允许使用对象同时跟踪多个用户的功能,该对象每秒更新一次.

现在,当用户在Android应用程序中按下一个按钮时,坐标会被发送到数据库,每次位置发生变化时, map 上的一个标记就会更新(并形成一条多段线).

因为我有多个用户,所以我会发送一个唯一且随机生成的字母数字字符串,以便 for each 用户显示一个单独的路径.当JS从数据库中提取这些数据时,它会判断用户是否存在,如果不存在,它会创建一个值为列表的新键.它看起来像这样:

loc = {f096012e-2497-485d-8adb-7ec0b9352c52: [new google.maps.LatLng(39, -86),
                                              new google.maps.LatLng(38, -87),
                                              new google.maps.LatLng(37, -88)],
       44ed0662-1a9e-4c0e-9920-106258dcc3e7: [new google.maps.LatLng(40, -83),
                                              new google.maps.LatLng(41, -82),
                                              new google.maps.LatLng(42, -81)]}

我要做的是存储一个坐标列表作为键的值,这是用户的ID.每次位置改变时,我的程序都会通过添加到列表中来不断更新这个列表(这可以正常工作).

我需要做的是每次位置改变时更新标记的位置.我想通过 Select 数组中的最后一项来实现这一点,因为这将是最后一个已知的位置.现在,每次更改位置时,都会向 map 添加一个新标记(示例中的每个点都会在该位置显示一个标记),因此标记会继续添加.

每次位置更新时,我都会使用"for(x in loc)"语句从列表中获取最后一个位置,并使用它更新标记.如何从散列中的数组中 Select 最后一个元素?

推荐答案

如何访问数组的最后一个元素

看起来是这样的:

var my_array = /* some array here */;
var last_element = my_array[my_array.length - 1];

在你的 case 中是这样的:

var array1 = loc['f096012e-2497-485d-8adb-7ec0b9352c52'];
var last_element = array1[array1.length - 1];

或者,在较长版本中,不创建新变量:

loc['f096012e-2497-485d-8adb-7ec0b9352c52'][loc['f096012e-2497-485d-8adb-7ec0b9352c52'].length - 1];

如何添加使其更简单的方法

如果您热衷于创建函数/快捷方式来完成此类任务,请使用以下代码:

if (!Array.prototype.last){
    Array.prototype.last = function(){
        return this[this.length - 1];
    };
};

将允许您通过调用数组的last()方法来获取数组的最后一个元素,在本例中,例如:

loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();

你可以在这里判断它是否有效:http://jsfiddle.net/D4NRN/

Javascript相关问答推荐

JavaScript .Click()函数不起作用

如何指定1条记录1个表?

在具有焦点和上下文的d3多线图表中,如何将上下文的刷新限制在特定日期?

如何使用React渲染器放置根dis?

fetch在本地设置相同来源的cookie,但部署时相同的代码不会设置cookie

角色 map 集/spritebook动画,用户输入不停止在键上相位器3

使搜索栏更改语言

Spring boot JSON解析错误:意外字符错误

Angular 17—每当一个布尔变量变为真时触发循环轮询,只要它保持为真

配置WebAssembly/Emscripten本地生成问题

显示图—如何在图例项上添加删除线效果?

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

Next.js服务器端组件请求,如何发送我的cookie token?

对路由DOM嵌套路由作出react

在FAQ Accodion应用程序中使用React useState时出现问题

为什么我的按钮没有从&q;1更改为&q;X&q;?

每次重新呈现时调用useState initialValue函数

我不知道如何纠正这一点.

react 路由如何使用从加载器返回的数据

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?