我正在使用名为GMaps3的精彩jQuery插件在网站上显示地图。我正在尝试使用.addMarker方法添加标记(我只知道地址,而不是lat和long),但在我的示例中它只添加了11个标记。
我试图弄清楚为什么某些标记不显示而其他标记显示。
更新:显示的标记数不是常数。我编辑了一个地址字符串(感谢NgM)使其更具体,显示的标记数量增加到11.其他标记虽然不含糊,但不会显示。这是第一个出现的十几个。
这是一个 online example 来显示问题。
答案 0 :(得分:5)
我遇到了完全相同的问题,我终于弄明白了如何解决它。问题出现了,因为地理编码不允许大量同时发出请求。所以这就是setInterval()javascript方法派上用场的地方。
只需在代码中添加以下内容:
counter = 0,
timer = setInterval(function () {
createMarkers(map, postcodes);
counter++
if (counter3 === postcodes.length) {
clearInterval(timer);
}
}, 1000);
CreateMarkers()函数是从Array创建标记的位置。因此,在对每个邮政编码进行地理编码并应用于地图后,脚本将等待1秒钟,然后继续下一个邮政编码。
我希望这会有所帮助,我花了很多时间想知道为什么它一次只能在地图上放置11个标记!
答案 1 :(得分:1)
这是因为您的某些地址无法解析为特定地址。
您的条目如下:“Campus Pappelallee,14406 Potsdam,Germany”
Google地图,当您搜索此地址时,无法知道您希望它选择的位置。有超过1,500个建议。
您看到地址标记的原因如下:
Boulevard James-Fazy15,1201Genève,Switzerland
是因为Google地图可以找到该地址,而且该搜索只返回一个结果(IE就是您想到的确切位置)。
对于Google地图无法正确解析的所有地址,您知道它存在于您列出的地址,只需使用long / lat而不是地址。你说你碰巧不知道一个更具体的地址,但是我建议你花点时间弄清楚你想要放置标记的位置。
答案 2 :(得分:0)
如果您的地址列表有限,您应该考虑将它们放入Google电子表格中,然后将它们放入Google Fusion表格http://www.google.com/fusiontables/public/tour/index.html,这样您就可以导出为KML。
一旦您的数据在Fusion Table中,您就可以选择对地址进行地理编码。这需要一些时间,比如几分钟,100个地址。即使这样,也会有一些地址无法找到或找不到。但这些将非常明显,因为它们出现在预览kml地图上。例如,我在剑桥有一些英国地址可以进行地理编码,但谷歌已经解决了它们在美国剑桥的问题。 (我只是将'UK'附加到每个地址并再次运行,并且工作正常。)
所以: 正如NgM所解释的那样,谷歌在飞行中查找地址并非万无一失 正如您所发现的那样,谷歌即时查找地址并不一致。 谷歌Fusion Tables允许谷歌做一个彻底的工作,让你质量审查这些选择,如果你愿意,再次运行它们,或覆盖它们,然后最重要的是谷歌永久缓存这些结果(好吧,作为Beta的永久性) Google项目可以被判定为......)
但正如我所说,只有你的地址列表是有限的。
你得到了地理编码,你可以在本地下载,如果你想多样化使用它,你也可以赢得kml文件。
答案 3 :(得分:0)
只是一个建议:HTML源代码(演示页面)中没有有效的doctype或编码。这导致了奇怪的行为。尝试预先
<!DOCTYPE html>
到HTML源代码和标题(顺便说一句,缺少结束头标记)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
为jQuery和gmaps提供有效的标头,字符集和文档类型。