如何将传单标记与数据库中的对象ID相关联

时间:2014-03-16 21:07:05

标签: leaflet

在带有传单地图的网页上 - 我希望能够显示我的数据库对象,每个对象都有一个lat,lng。在地图上使用标记。

所以当我点击标记时,我想从db获取信息并显示它。

如何存储对象ID或将其与标记相关联,以便在单击标记时我可以从数据库加载对象并显示详细信息?

我知道我可以使用lat / lng来使用半径搜索来找到对象,但这不会起作用并且不准确,因为可能有多个具有相同lat / lng的对象。

2 个答案:

答案 0 :(得分:2)

好的,基于@Ivar在另一个帖子中提供的答案:Leaflet: Add a link to the markers

将标记添加到地图后,可以直接将dbObject Id与标记关联。当标记添加到地图时,会为其分配一个名为" _leaflet_id"的ID。这可以通过目标对象获取,也可以在添加到地图后设置为自定义值。

现在,在标记OnClick事件中,您只需获取点击标记的ID,并使用它来查询数据库。

marker._leaflet_id = dbObjectId;

答案 1 :(得分:1)

不确定如何连接到您的数据库,但流程将是这样的:
抓住点击的点的lat / lng,然后将该信息发送到采用S2等空间几何lib的逻辑。在点击的点周围创建一个包络,并获得其lat / lng在该包络内的所有点,然后以你的点击点为最短球面距离的lat / lng为你的匹配。
我确信通过CartoDB或类似PostGIS之类的内容可以更轻松地完成此操作。

-
假设您的数据库对象设置在如下表中:

ID(guid) | 姓名 | 纬度 |的经度
fe124etc。|标记1 | 43.123 | -117.123
y75W2etc。|标记2 | 44.123 | -116.123

您执行上述方法,然后在获得所需的标记后,将其他数据库数据(名称,地址,w / e)发送回绑定到标记的弹出窗口。


另一种探索的途径是(取决于数据)你可以从中制作geoJSON层。 (leaflet geojson use)。如果这样做,您可以为每个点创建/存储/读取属性。
希望这会让它更加清晰。