Я бы сказал, что у вас также есть два других варианта для получения необходимой вам функциональности.
Во-первых, вы можете использовать кладж, чтобы сфокусировать результаты на более значимых (хотя я бы не рекомендовал этот метод, он может быть достаточным для ваших нужд).
Перед первым запросом к API геокодирования Google, чтобы получить данные для автоматически полученных результатов, сначала определите страну, в которой находится город. Затем вы можете использовать строку страны в качестве суффикса для запроса геокодирования.
Что-то вроде:
var country = 'UK'; // from initial query, reverse geocode, etc.
geocoder.geocode({
'address': address + ', ' + country
},
См. Ответ в этом вопросе для примера.
Геокодер Google возвращает неверную страну, игнорируя подсказку региона
Во-вторых, предпосылка о том, что вы «явно не можете настроить или изменить эти данные», ошибочна. Вы можете, конечно, отфильтровать результаты по стране. Что-то вроде следующего фрагмента показывает, как детализировать результаты.
geocoder.geocode({
'address': address
},
function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
for(var i = 0, l = results.length; i < l; i++) {
for (var j = 0, l2 = results[i].address_components.length; j < l2; j++) {
for (var k = 0, l3 = results[i].address_components[j].types.length; k < l3; k++) {
if(results[i].address_components[j].types[k]=="country") {
var country = results[i].address_components[j].long_name;
// do stuff based on the country
// add the result to your auto-suggest, etc...
}
}
}
}
});
}
Наконец, если вы внедрили обертку CGI для геокодирования, вы можете кэшировать результаты. Таким образом, ваше приложение автоматически создаст для вас базу данных. Это избавило бы от необходимости фактически выполнять геокодирование для известных результатов. Я думаю, что это почти то, на что вы намекаете в своем вопросе, и нет никаких причин, по которым вы не могли бы предварительно заполнить свой кэш известными результатами, если вы нашли надежный источник данных.
Взгляните на этот документ, в котором изложены различные стратегии геокодирования с использованием Maps Api - в нем обсуждаются такие вещи, как кеширование и т. Д.
https://developers.google.com/maps/articles/geocodestrat
EDIT
Вы можете использовать что-то вроде geoPlugin
http://www.geoplugin.com/webservices/php#php_class
Посмотрите на близлежащие объекты, это именно то, что вы хотите.
http://www.geoplugin.com/webservices/extras