0

我有一个数据库查询,它从我的数据库中返回一堆基于位置的数据。我最终得到了一个对象列表(我将其放入单个对象并通过 console.log() 来查看里面的内容)。

每个对象代表一个来自用户的条目,其中包含有关位置的注释:

它包含:商店名称、地址、用户ID、备注。

如此多的人可以访问该位置并写下不同的笔记。我想要做的是将位置放在谷歌地图(JS API)上并按位置分组,因此当单击标记时,它包含该位置的所有注释。

所以我考虑将地址返回的对象分组,然后为每个地址绘制标记并循环遍历。

for (var i = 0; i < rowCountVisits; i++) {
    var storelatlng = new google.maps.LatLng(
    parseFloat(result[2].latVisit[i]),
    parseFloat(result[2].lngVisit[i]));
    locationsObjVisits.push({
        storelatlng: storelatlng,
        vName: result[2].vName[i],
        address: result[2].locationVisit[i],
        date: result[2].dateVisit[i],
        notes: result[2].notes[i],
        usersName: result[2].user.thisName[i],
        thisColour: result[2].user.thisColour[i]
    });
}

所以locationsObjVisits...我不知道该怎么办。有任何想法吗?

4

1 回答 1

2

我将locationsObjVisits使用地址作为键将其存储在具有数组属性的对象中。所以:

var locationsObjs = {};

for (var i = 0; i < rowCountVisits; i++) {
    var storelatlng = new google.maps.LatLng(
    parseFloat(result[2].latVisit[i]),
    parseFloat(result[2].lngVisit[i]));
    var address = result[2].locationVisit[i];

    locationsObjs[address] = locationsObjs[address] || [];
    locationObjs[address].push({
        storelatlng: storelatlng,
        vName: result[2].vName[i],
        address: address,
        date: result[2].dateVisit[i],
        notes: result[2].notes[i],
        usersName: result[2].user.thisName[i],
        thisColour: result[2].user.thisColour[i]
    });
}

现在您拥有按地址分组的所有对象,您可以使用地址作为键从数组中的对象中检索它们。您还可以遍历locationsObjs对象的键以获取唯一的地址列表。所以:

for(var address in locationsObjs)
    if(locationsObjs.hasOwnProperty(address))
        // Plot marker using the address.
于 2013-05-12T13:34:15.737 回答