【问题标题】:Jquery and Google Maps: Cannot display more than 11 markersJquery 和谷歌地图:不能显示超过 11 个标记
【发布时间】:2011-10-01 13:39:02
【问题描述】:

我正在使用一个很棒的 jQuery 插件 GMaps3 在网站上显示地图。我正在尝试使用 .addMarker 方法添加标记(我只知道地址,而不是经纬度),但在我的示例中它最多只添加了 11 个标记。

我试图弄清楚为什么某些标记没有显示而其他标记显示。

更新: 显示的标记数量不是恒定的。我编辑了其中一个地址字符串(感谢 NgM)以使其更具体,并且显示的标记数量增加到 11 个。但其他标记不会显示,即使它们是非模棱两可的。这是出现的前十几个左右。

这是一个 online example 来显示问题。

【问题讨论】:

    标签: jquery google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

    我遇到了完全相同的问题,我终于想出了如何解决它。出现问题是因为地理编码不允许大量同时请求。这就是 setInterval() javascript 方法派上用场的地方。

    只需在您的代码中添加类似这样的内容:

    counter = 0,
    timer = setInterval(function () {
    createMarkers(map, postcodes);
        counter++
        if (counter3 === postcodes.length) {
            clearInterval(timer);
        }
    }, 1000);
    

    CreateMarkers() 函数是从数组创建标记的地方。因此,在对每个邮政编码进行地理编码并应用于地图后,脚本会等待 1 秒,然后继续处理下一个邮政编码。

    我希望这会有所帮助,我花了很长时间想知道为什么它一次只能在地图上显示 11 个标记!

    【讨论】:

      【解决方案2】:

      这是因为您的某些地址无法解析为特定地址。

      您的条目如下:“Campus Pappelallee, 14406 Potsdam, Germany”

      当您搜索此地址时,Google 地图无法知道您希望它选择的位置。有超过 1,500 条建议。

      您看到以下地址标记的原因:

      Boulevard James-Fazy 15, 1201 Genève, Switzerland

      是因为 Google 地图可以找到该地址,并且该搜索只返回一个结果(即您想到的确切位置)。

      对于 Google 地图无法正确解析的所有地址,并且您知道它存在于您列出的地址中,然后只需使用 long/lat 代替地址即可。您说您碰巧不知道这些条目的更具体地址,所以我建议您花一些时间弄清楚您想要放置标记的确切位置。

      【讨论】:

      • 感谢您的回答,NgM。波茨坦地址可能是这样。但所有其他人都解析到一个特定的地址。以纽伦堡地址为例。如果我将它放在标记列表的顶部,它会显示在地图上。如果我把它放在底部,它不会。显示的标记数量保持不变。这是第一个出现的十几个左右。还有其他建议吗?
      • 您是否验证了地址?我看到你用 Campus Papellallee 1, 14406 Potsdam, Germany 替换了我提到的那个。你需要确保所有这些工作——这个解决不了。我们无法找到地址:Campus Papellallee 1, 14406 Potsdam, Germany 您想要:获取德国波茨坦的地图。如果纽伦堡地址在末尾,我可以提取它。
      • 但是它出现在了地图上!无论如何,我将地址更改为可以确定的地址。这是右上角的标记。不过,其他标记不会显示。
      • 我可以在本地使用有效地址。我可以添加 50 个有效地址,它们都显示出来了。我 100% 是因为您添加了无效地址。这真的很简单。一个一个地检查它们并删除无效地址。尝试添加已知地址,它会验证我告诉你的内容。
      • 这很奇怪。 我刚刚验证了所有 15 个地址,它们都只返回一个结果。你能告诉哪个地址不工作吗? (另一件事让我觉得不是地址:当我更改地址的顺序时,总是出现前 11 个地址。)
      【解决方案3】:

      如果您的地址列表是有限的,您应该考虑将它们放入 Google 电子表格中,然后将它们放入 Google Fusion Table http://www.google.com/fusiontables/public/tour/index.html,这样您就可以导出为 KML。

      一旦您的数据在 Fusion Table 中,您就可以选择对地址进行地理编码。这需要一些时间,比如 100 个地址需要几分钟。即使这样,也会有一些地址找不到,或者定位不正确。但是这些将非常明显,因为它们显示在预览的 kml 地图上。例如,我有一些英国地址要在剑桥进行地理编码,但它们被谷歌解析到美国的剑桥。 (我只是将“UK”附加到每个地址并再次运行它,它工作正常)。

      所以: 正如 NgM 所解释的那样,Google 即时查找地址并非万无一失。
      正如您所发现的,Google 即时查找地址并不一致。 Google Fusion Tables 允许 Google 进行彻底的工作,以便您对这些选择进行质量审查并根据需要再次运行它们,或者覆盖它们,然后最重要的是让 Google 为您永久缓存这些结果(以及与 Beta 一样永久谷歌项目可以判断为...)

      但正如我所说,只有当你的地址列表是有限的。

      如果您想多样化地使用它,您可以进行地理编码,您可以在本地下载,还可以赢得 kml 文件。

      【讨论】:

      • 谢谢,杯子。不幸的是,地址列表不是有限的。我必须为输入地理数据的用户找到一种输入纬度和经度的方法。有什么想法吗?
      • 搜索“谷歌地图反向地理编码”一词以获得一些想法。
      【解决方案4】:

      只是一个建议:HTML 源代码(演示页面)中没有有效的文档类型或编码。这会导致奇怪的行为。尝试前置

      <!DOCTYPE html>
      

      到 HTML 源代码和标题(顺便说一句,缺少结束的 head 标签)

      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      

      为 jQuery 和 gmaps 提供有效的标题、字符集和文档类型。

      【讨论】:

        猜你喜欢
        • 2018-05-14
        • 2014-10-08
        • 1970-01-01
        • 2020-07-09
        • 1970-01-01
        相关资源
        最近更新 更多