谷歌地图api v3 – 多个标记,多个infowindows,3个图标

我想制作“WiFi地图”,我有问题,我想有3个图标OPEN / WEP / WPA,以及许多标记,每个标记都有自己的信息窗口,只有1个infowindow在顶部,所以当我愿意单击#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] 

请帮我!:)

BTW:我的MySQL数据库格式为http://wklej.to/7Puw/html

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

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

  • MarkerClusterer – 我将它用于mashup,发现很容易集成,有一组很好的默认图标。
  • ClusterMarker – 我没有使用过这个,但看起来非常实用。

您还可以阅读此博客文章 ,其中介绍了各种备选方案或此博客文章 ,其中讨论了有关服务器端群集的详细信息。

我最近遇到了同样的问题,并在Sean Vieira的帮助下成功解决了大部分问题。

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

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

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

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

我的解决方案并没有干净地处理信息。 打开后,除非用户手动关闭,否则它们将保持打开状态。 我已经看到解决方案在那里关闭其他人,因为一个新的打开,但还没有实现它们。

我知道这是一个古老的问题,但是我有一个答案,我会为后代写它:)

可以很容易地解决infowindow问题的解决方案。 创建一个名为currentWindow的全局变量。 每当用户按下标记时,eventlistener都会检查currentWindow = infoWindow。 如果没有,则关闭currentWindow并将其设置为新的infowindow。 纯粹而简单,只记得打开新的infowindow。