我正在制作一个应用程序,实时更新用户的位置和路径,并在Google地图上显示。我有一个功能,可以使用对象同时跟踪多个用户,该对象每秒更新一次。
现在,当用户在Android应用中按下按钮时,坐标会被发送到数据库,并且每次位置发生变化时,地图上的标记也会更新(并形成一条折线)。
由于我有多个用户,因此我发送了一个唯一且随机生成的字母数字字符串,以便为每个用户显示单独的路径。当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。每次位置更改时,我的程序都会通过添加到列表来更新此列表(这正常工作)。我需要做的是每次位置更改时更新标记的位置。我想通过选择数组中的最后一个项目来实现这一点,因为那将是最后已知的位置。目前,每次位置更改时都会向地图添加一个新标记(示例中的每个点都将在该位置显示一个标记),因此会继续添加标记。
我将使用 `for (x in loc)` 语句每次位置更新时从列表中获取最后一个位置,并使用它来更新标记。如何从哈希内的数组中选择此最后一个元素?
loc
不是一个数组,OP正在询问的是loc['f096012e-2497-485d-8adb-7ec0b9352c52']
(或者loc['f096012e-2497-485d-8adb-7ec0b9352c52']
)。 - zizozuunshift()
,这比手动“移动”元素要快得多。为了仅在数组中保留1000个元素,并在开头添加它们,只需使用以下代码(其中arr
是存储要存储的元素的数组):arr.unshift(new_element); arr.splice(1000);
。unshift()
在数组开始处添加元素,而splice(1000)
删除第1,000个元素后的所有内容(如果数组较短,则不删除任何元素)。是否符合您的需求? - Tadeck.length-1
似乎是最快的方法。 - Qix - MONICA WAS MISTREATED