【问题标题】:Google Maps only shows a limited amount (21) of markers from JSON file谷歌地图仅显示来自 JSON 文件的有限数量 (21) 标记
【发布时间】:2017-08-01 14:30:11
【问题描述】:

所以,我在我的网站上创建了一个谷歌地图,它具有从 JSON 文件动态检索数据的功能,然后根据收到的数据在地图上创建标记。

按照Google Maps: Working With JSON Objects 上的 Google 官方教程,一切正常,除了有一个小问题:地图最多只显示大约 21 个标记,而至少有 1600 个条目。结果标记总是相同的,但是它们具有正确的数据(标记的位置正确,信息窗口的标题正确)这是相关代码的 sn-p:

for (var x in dataForm4) {
            var data = dataForm4[x];
            var latLng = new google.maps.LatLng(data.lat, data.lng);
            addMarker (map, data.address, latLng);
     };
  }      //This is where the "initiliaze map" function ends

var infoWindow;
  function addMarker (map, address, latLng){
    var marker = new google.maps.Marker({
      position: latLng,
      map: map,
    });

  google.maps.event.addListener(marker, 'click', function() {
    if (typeof infoWindow != 'undefined') infoWindow.close();
    infoWindow = new google.maps.InfoWindow ({
    content: address
  });

    infoWindow.open(map, marker);
  });
}

关于代码的说明:

  • dataForm4是JSON文件的字符串化变量:

    <script>
      var dataForm4 = <%- JSON.stringify(form2) %>;
    </script>
    
  • address 是位于 JSON 文件中的每个地址的“标题”,用于在 infowindow 中使用

  • map 变量在初始化函数中定义

我还有一个功能,可以将输入到数据库的数据自动输入到 JSON 文件中,但这可能无关紧要。

遗憾的是,标记聚类不是一种选择。我试过使用 setTimeout() 和 setInterval() 函数,但由于我是新手,所以无法让它与我的地图一起正常工作。作为参考,我使用的是免费版的 Google Map API。

【问题讨论】:

  • 该死,难怪“JSON 对象”越来越令人讨厌,即使 Google 也教它们...
  • 我的第一个想法:数据有错误,可能是特殊字符干扰了函数。然后功能就停止了。应该是地址吧。试试这个看看会发生什么:addMarker (map, 'Hello', latLng)

标签: javascript json google-maps google-maps-api-3


【解决方案1】:

哇,在比较数据库之后,似乎有人手动输入了一些数据,文件中的“lat”变量输入为“lat”。由于最后的空间,google无法绘制地址的纬度。我们早些时候修复了这个问题,但负责人忘记更改手动输入的数据。所以错误的变量是错误的根源。

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多