我知道类似的问题已发布,但我没有找到并在任何一个答案,因为它涉及到我的特定问题。谷歌地图超过查询限制
我有一个JavaScript使用谷歌地图将客户邮编放在地图上。我遇到的问题与其他人已发布的问题类似 - 我收到“超出查询限制”错误。
我尝试了不同的设置,使用setTimeOut尝试在允许的时间间隔内发送Google数据,但我无法使其工作。
这里是我的行动:
function initialize()
{
var rowNum = 0 ;
var rowColor = "" ;
var latlng = new google.maps.LatLng(27.91425, -82.842617);
var myOptions =
{
zoom: 7,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
geocoder = new google.maps.Geocoder();
data.forEach(function(mapData,idx)
{
window.setTimeout(function()
{
geocoder.geocode({ 'address': mapData.address}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: mapData.title,
icon: getIcon(mapData.type)
});
var contentHtml = "<div style='width:250px;height:90px'><strong>"+mapData.title+"</strong><br />"+mapData.address+"</div>";
var infowindow = new google.maps.InfoWindow({
content: contentHtml
});
google.maps.event.addListener(marker, 'click', function()
{
infowindow.open(map,marker);
});
marker.locid = idx+1;
marker.infowindow = infowindow;
markers[markers.length] = marker;
if (idx%2 == 0)
{
rowColor = 'style="background-color:#00FFFF;"' ;
}
else
{
rowColor = 'style="background-color:#FFFFFF;"' ;
}
var sideHtml = '<div ' + rowColor + ' class="loc" data-locid="'+marker.locid+'"><b>'+mapData.title+'</b><br/>';
sideHtml += mapData.address + '</div>';
$("#locs").append(sideHtml);
//Are we all done? Not 100% sure of this
if(markers.length == data.length) doFilter();
}
else
{
// alert("Geocode was not successful for the following reason: " + status);
}
}, 3000);
});
});
当我使用这个动作运行我的网页,我回来11个标记,即使我有比更多的在我的JSON字符串。 window.setTimeout绝对没有影响 - 我显然在这里做错了。
我希望在这个问题上的任何帮助。
谢谢,
你试图显示多少点?如果它是点数[一般的答案是“不要在每次加载页面时对已知位置进行地理编码,将它们离线编码并使用结果坐标在页面上显示标记。”](http:// stackoverflow.com/questions/11792916/over-query-limit-in-google-maps-api-v3-how-do-i-pause-delay-in-javascript-to-sl/11793406#11793406) – geocodezip
在我目前例如,我试图从静态JSON字符串中加载大约100个标记。实际上,我需要根据客户需求动态加载基于特定搜索条件的JSON字符串。 客户端将存储数据存储在MySQL数据库中。用户首先在表单上提示用户过滤必要的数据 - 比如说销售一个月。 然后,我使用Java操作来查询数据库,然后返回JSON字符串。 谷歌地图使用此字符串完成。 销售将根据客户的邮政编码放置在地图上。 – user2403424
您需要获取zipcode的地理坐标数据库。在网页加载时对100(或更多)的邮政编码进行地理编码将花费太长时间。他们不会移动。或者在服务器上进行地理编码,然后根据[使用条款](https://developers.google.com/maps/faq#tos)将地理信息缓存到数据库中。 – geocodezip