在我的应用程序中,我试图将一个Region(city)存储在我的Location模型中以及lngLat和地址。
事情是,对于新的地点来说,这将很容易,因为当我创建时,我会这样做。对于旧位置,我写了这段代码
function geocodeLatLng(geocoder, latlngStr, callback) {
var latlng = { lat: parseFloat(latlngStr.split(',')[0]), lng: parseFloat(latlngStr.split(',')[1]) };
var city;
geocoder.geocode({ 'location': latlng }, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
var address = results[0].address_components;
for (var p = address.length - 1; p >= 0; p--) {
if (address[p].types.indexOf("locality") != -1) {
console.log(address[p].long_name);
city = address[p].long_name;
callback(city);
}
}
}
});
}
我称之为
self.getRegion = function () {
for (var i = 0; i < self.rawLocations().length; i++) {
var location = self.rawLocations()[i];
setTimeout(
geocodeLatLng(geocoder, location.systemRepresentation(), function (res) {
}), 250);// End of setTimeOut Function - 250 being a quarter of a second.
}
}
问题是我在5次通话后得到over_query_limit。我将把它自己的位置存储在数据库中,现在我必须这样做来修复旧的位置。
任何标题?
答案 0 :(得分:1)
谷歌地图javascript库每秒最大通话次数以及每小时费率,您是否尝试以高于其每秒费率的速度进行地理编码?
5确实看起来很低,因为他们自己的文件通知用户它是每秒50(https://developers.google.com/maps/documentation/geocoding/usage-limits)
您还注册了密钥并正在使用它吗?这可能会有所不同(如果谷歌帐户已经注册了地图API,有时您可以使用没有密钥的系统)