0

我想制作“WiFi 地图”,但我有问题,我想要 3 个图标 OPEN/WEP/WPA,还有很多标记,每个标记都有自己的信息窗口,顶部只有 1 个信息窗口,所以我什么时候会单击#1,然后单击#2,然后#1 将隐藏。而且,如果我将有 XXXX 标记,那么缩小地图时它们会出现问题,有可能使它就像一个地方的许多标记都不会在缩小但放大时显示,是吗?

我在 MySQL 数据库中有关于网络的所有信息,所以在 PHP 中很容易显示它,就像在官方谷歌地图文档/v3/overlays.html#ComplexIcons 的教程中一样

  var nodes = [
['WKKOZ',50.192843,18.967801,nodewep,1],
['airlive',50.193056,18.967974,nodeopen,2],
['Zurawia-3',50.198398,18.974723,nodeopen,3],
['siec dol',50.19303,18.96796,nodewep,4],
['KP_8_1',50.193092,18.96801,nodewep,5],
['Natalia',50.19286,18.967812,nodewpa,6],
['Z104',50.192591,18.967588,nodewep,7],
['D2',50.192499,18.96876,nodewep,8],
['Niesia',50.192474,18.968239,nodewpa,9],
['boolean',50.192539,18.967545,nodewpa,10],
['neostrada_0d65',50.192179,18.96758,nodewep,11],
['neostrada_2d38',50.192216,18.96761,nodewep,12],
['Belkin_G_Wireless_9B7BF7',50.192191,18.969261,nodeopen,13],
['Trans_FijPn',50.1939,18.979565,nodeopen,14],
['dlinklis',50.193113,18.968024,nodewpa,15]

请帮我!:)

顺便说一句:我的 MySQL 数据库的格式为http://wklej.to/7Puw/html

4

3 回答 3

1

我想您是在问如何在地图上放置大量标记,这些标记在更高的缩放级别下会隐藏起来。这称为标记聚类。

有一些 Javascript 库在客户端实现了集群,并且很容易集成到现有的 mashup 中:

  • MarkerClusterer - 我它用于混搭,发现它很容易集成,带有一组漂亮的默认图标。
  • ClusterMarker - 我没用过这个,但它看起来很实用。

您还可以阅读这篇介绍各种替代方案的博文或讨论服务器端集群细节的博文。

于 2010-03-30T10:53:56.540 回答
1

我最近遇到了完全相同的问题,并在 Sean Vieira 的帮助下设法解决了大部分问题。

这个问题的答案在这里: 在地图上显示多个标记,并带有自己的信息窗口

您的方案的变体是您只需在数组中添加一个附加字段,您可以在其中指定要使用的标记的 URL 路径。

然后,在循环创建标记时(从var marker = new google.maps.Marker开始),您将从数组中调用该icon变量的值。

由于您只有三种图标类型,并且我假设您将从数据库中填充记录,因此您将测试访问点的类型,然后在该位置编写标记类型的相关 URL 路径(我是ASP 而不是 PHP 人,所以请原谅使用术语 write 是不正确的)。

我的解决方案不能完全处理 infowindows。一旦打开,它们将保持打开状态,除非用户手动关闭。我已经看到了在打开新的解决方案时关闭其他解决方案,但还没有实施它们。

于 2010-05-25T15:42:59.133 回答
0

我知道这是一个老问题,但我有答案,我会写给后代看:)

信息窗口问题的解决方案可以很容易地解决。创建一个名为 currentWindow 的全局变量。每当用户按下标记时,事件监听器都会检查 currentWindow = infoWindow。如果没有,则关闭 currentWindow 并将其设置为新的信息窗口。简单明了,只要记得打开新的信息窗口。

于 2011-05-01T21:05:14.730 回答