在下面的代码中,locs包括一些来自希腊不同地区的名字。对于每个区域,我调用graphicMap 函数通过地理编码服务查找纬度和经度,并在地图上创建标记。
但是从索引 12 开始,它显示错误。
请参阅以下结果:
错误 : ΧΑΝΙΩΝ
OK : ΑΝΔΡΑΒΙΔΑΣ - ΚΥΛΛΗΝΗΣ
OK : ΒΕΡΟΙΑΣ
OK : ΑΒΔΗΡΩΝ
OK : ΑΧΑΡΝΩΝ
OK : ΑΣΤΥΠΑΛΑΙΑΣ
OK : ΡΕΘΥΜΝΗΣ
OK : ΓΑΛΑΤΣΙΟΥ
OK : ΔΕΛΦΩΝ
OK : ΒΕΛΒΕΝΤΟΥ
OK : ΖΑΓΟΡΑΣ - ΜΟΥΡΕΣΙΟΥ
OK : ΒΕΛΟΥ ΒΟΧΑΣ
例如,如果我删除记录ΑΧΑΡΝΩΝ,则 ΧΑΝΙΩΝ的值可以正常工作。
谷歌是否对通过地理编码服务的搜索设置了限制?
这是因为我没有购买 API 密钥吗?
提前感谢!
geocodeLatLong( JXMapContent , map , mapSet , graphic , graph , pins ){
/**
**** @procedure
**** Split and create table with the regions
**** Iterate table and find coordinates for each region
**/
var locs = JXMapContent.split( "," ) , u , length_table = locs.length;
for( u = 0; u < length_table; u++ )
{
graph( locs[ u ] , map , graphic , pins );
}
}
graphicMap( _location , map , graphic , pins ){
var geocoderRequest = {
address: _location
};
graphic.geocode( geocoderRequest, function(results, status) {
if (status === google.maps.GeocoderStatus.OK){
var marker = new google.maps.Marker({
map:map,
position : results[0].geometry.location,
icon:"images/marker.png",
animation:google.maps.Animation.DROP
});
pins.push( marker );
marker.addListener('click', function() {
for (var i = 0; i < pins.length; i++) {
pins[i].setAnimation(null);
}
if( this.getAnimation() !== null) {
this.setAnimation(null);
} else {
this.setAnimation(google.maps.Animation.BOUNCE);
}
});
console.log( "OK : " + _location );
}else{
console.log( "Error : " + _location );
}
});
}
虽然您可以对谷歌地图的地理编码服务进行的 API 调用肯定会有限制,但您可能可以查看您返回的错误代码以了解发生了什么。有关您所理解的"谷歌给您错误"的更多详细信息会很棒。
从他们的文档中,您可以在此处找到错误代码 https://developers.google.com/maps/documentation/javascript/geocoding?hl=es#GeocodingStatusCodes
如果您超过配额,您会看到"OVER_QUERY_LIMIT"
例如......
如果错误只是意味着该城市没有结果,也许它只是给你一个"ZERO_RESULTS"
,你没有正确解析其余的,你的JS失败了