【发布时间】: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