Вопрос как можно более точно искать адрес или место(если попали в какое-то место из google place) Я делаю так: выполняю поиск мест с параметром RankBy = PROMINENCE, и минимальным радиусом, пробовал 10 метров, 20, 100 и так далее, потом из массива результатов выбираю место, у которого минимальное расстояние от заданной точки, но дело в том что место возвращается не всегда точно и с непонятной мне логикой, например, я устанавливаю маркер точно на "Большой театр" в Москве, а ближайшее место, которое мне возвращается - это "Тверской район", это, я так понимаю, потому, что при RankBy = PROMINENCE результаты сортируются еще на основе рейтинга и рейтинг Тверского района выше, чем рейтинг Большого театра, но ведь я устанавливаю маркер точно на координаты Большого театра и радиус поиска задаю 20 метров, а его, Тверского театра, вообще нет в результатах поиска. Можно конечно использовать RankBy = DISTANCE, но тогда нужно указывать обязательно тип объекта, а мне нужны все типы мест. Геокодирование не подходит, так как там ограничение 2500 запросов в сутки, мне этого очень мало. Может есть какие-нибудь варианты?
var request = {
location: marker.getPosition(),
radius: '20',
};
var service = new google.maps.places.PlacesService(map);
service.search(request, callback);
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
var resultsDistance = [];
for (var i = 0; i < results.length; i++) {
resultsDistance.push(parseFloat(google.maps.geometry.spherical.computeDistanceBetween(location, results[i].geometry.location).toFixed(2)));
}
i = resultsDistance.length, min = resultsDistance[0], index = 0;
while (i--) {
if (resultsDistance[i] < min) {
min = resultsDistance[i];
index = i;
}
}
var place = results[index];
$('#location').val(place.name + ', ' + place.vicinity)=
}
}