gpt4 book ai didi

javascript - 将 JSON 值转换为数组

转载 作者:行者123 更新时间:2023-12-02 17:44:36 24 4
gpt4 key购买 nike

我使用传单 map 和 html5 地理定位。我有一个 View ,它从 node.js 服务器接收坐标,并为每个唯一 id 添加标记,并在新坐标进入时更新它们的位置。我将标记对象存储在一个对象中,ID 作为键,标记作为值(value)。因此,在跟踪两个设备时,markers 对象如下所示:

Object {qwpW9K0L1OtOhsV3CF0G: e, syeQs_oH7s8z8f0UCF0I: e}

其中 e 是实际标记。

我正在解决的问题是传单 api 喜欢接收数据数组。例如,我想使用功能组和 map.fitBounds(...) 使 map View 边界适合标记。因此,我迭代对象并将标记插入新数组,并在每次创建新标记或新坐标进入时更新 map 边界,这似乎效率极低,而且显然是错误的方法。

我正在处理的完整socket.io代码块:

socket.on('markerCoords', function(data) {
var markerGroup = [];
if(data.id in markers) {
markers[data.id].setLatLng([data.data.latitude, data.data.longitude]);
$.each(markers, function(i, e) {
markerGroup.push(e);
});
var group = new L.featureGroup(markerGroup);
map.fitBounds(group.getBounds().pad(0.5));
} else {
var marker = L.marker([data.data.latitude, data.data.longitude], {"title": data.id, "draggable": true}).addTo(map);
markers[data.id] = marker;
$.each(markers, function(i, e) {
markerGroup.push(e);
});
var group = new L.featureGroup(markerGroup);
map.fitBounds(group.getBounds().pad(1.0));
}
});

最佳答案

看起来一种可能的解决方案是仅创建一次功能组并在必要时更新它:

var group = new L.featureGroup();

socket.on('markerCoords', function(data) {
var markerGroup = [];
if(data.id in markers) {
markers[data.id].setLatLng([data.data.latitude, data.data.longitude]);
map.fitBounds(group.getBounds().pad(0.5));
} else {
markers[data.id] = L.marker(
[data.data.latitude, data.data.longitude],
{"title": data.id, "draggable": true}
).addTo(map);

group.addLayer(markers[data.id]);
map.fitBounds(group.getBounds().pad(1.0));
}
});

您也可以在启动时将组添加到 map 中,而不是单独添加每个标记。

关于javascript - 将 JSON 值转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872799/

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