Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2015, 19:10
Новичок на форуме
Отправить личное сообщение для lesh1j Посмотреть профиль Найти все сообщения от lesh1j
 
Регистрация: 06.03.2012
Сообщений: 6

Поиск места(google place) или адреса по координатам
Вопрос как можно более точно искать адрес или место(если попали в какое-то место из 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)=
  }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск по классам или иное s_makh Events/DOM/Window 1 23.01.2014 10:45
Настройка Sphinx, поиск по координатам greatilya Серверные языки и технологии 1 16.12.2012 18:01
js поиск div'ов по их координатам top/left Jekel Javascript под браузер 11 17.01.2011 01:12