Я создаю кнопку на веб-странице, которая возвращает широту и долготу адреса, введенного в форму с помощью карт Google. Это прекрасно работает, когда адрес действителен, но также возвращает результаты для недействительных адресов. Я попытался использовать geometry.location_type для ограничения типов местоположения на крыше, но этого недостаточно, поскольку Google возвращает «rooftop» для таких запросов, как «1 b fl» или «1 atlanta ga» - явно недействительные адреса. В случае «1 atlanta ga» он возвращает отформатированный_адрес «401 Moreland Ave NE, Atlanta, GA 30307, USA». Как мне убедиться, что он возвращает только точные или хотя бы точные результаты? В этих случаях я не получаю сообщений об ошибках.
Я пытался использовать ключ location_type, но, похоже, он возвращает "ROOFTOP" даже в приведенных выше примерах. Я не вижу никаких других ключей, которые определяют точность.
function geocodeAddress(address) {
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == 'OK') {
var locationType = results[0].geometry.location_type;
if (results.length > 1) {
$('#errorMessage').text('Too many results')
} else {
if (locationType != "ROOFTOP") {
$('#errorMessage').text('May not be accurate')
}
$('#Location_Latitude').val(results[0].geometry.location.lat());
$('#Location_Longitude').val(results[0].geometry.location.lng());
}
} else {
console.log('Unable to get coordinates at this time: ' + status);
}
});
}
Я хотел бы видеть сообщение об ошибке «Может быть неточным», которое появляется всякий раз, когда не удается найти точное совпадение. Я говорю близко к точному, потому что я не хочу, чтобы результаты выдавали ошибку, если пользователь не вводит ее точно так, как в базе данных, и потому что я спрашиваю только адрес, город и штат, чтобы страна и почтовый индекс может быть нулевым.
Это результат, который я получаю, используя приведенный выше пример Грузии:
0:
address_components: (9) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
formatted_address: "401 Moreland Ave NE, Atlanta, GA 30307, USA"
geometry:
location: _.R {lat: ƒ, lng: ƒ}
location_type: "ROOFTOP"
viewport: _.Cd {na: Bd, ga: xd}
__proto__: Object
place_id: "ChIJJ72T1agG9YgR7f1FJRUZsEc"
plus_code: {compound_code: "QM82+3F Atlanta, Georgia, United States", global_code: "865QQM82+3F"}
types: (5) ["bar", "establishment", "food", "point_of_interest", "restaurant"]
__proto__: Object
length: 1
__proto__: Array(0)