Получить границы карты Google, учитывая ограничивающую рамку, без загрузки карты?

Я создаю средство поиска магазинов и хочу реализовать следующий рабочий процесс:

  1. Пользователь входит в локацию
  2. Геокодируем с помощью Google Geocoder
  3. Мы исследуем геокодированные результаты на ограничивающую рамку.
  4. Мы увеличиваем масштаб карты до указанных границ и запрашиваем магазины в этих границах.
  5. Если в пределах карты есть магазины, отобразите их все на карте
  6. Но если теперь в ограничивающей рамке карты магазинов нет, увеличьте масштаб на один уровень дальше и повторяйте (5), пока не найдем несколько магазинов.

Вышесказанное нормально, но было бы лучше, если бы карта фактически не двигалась, пока не будут найдены некоторые магазины.

Итак, можно ли запросить Карты Google следующим образом: Учитывая ограничивающую рамку, можем ли мы найти границы правильно увеличенной карты Google, которая содержит эту конкретную ограничивающую рамку, без фактической загрузки Карта Google?

Я не уверен, что это возможно, потому что, я думаю, это зависит от ширины div карты на моей странице.

geocoder.geocode( {'address': search_text }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.panTo(results[0].geometry.location);
    map.fitBounds(results[0].geometry.bounds);
    var bounds_to_check_for_stores = map.getBounds();
    // QUESTION: get bounds_to_check_for_stores without the three preceding steps?
    } 
 }

person flossfan    schedule 15.05.2012    source источник


Ответы (1)


google.maps.LatLngBounds api-doc имеет метод : extend(point:LatLng), который позволит вам расширить границы, чтобы гарантировать, что границы скорректированы, чтобы включить точку LatLng, переданную в качестве параметра. Метод extend возвращает значение LatLngBounds, которое было скорректировано.

С его помощью вы могли:

  1. Расширяйте радиус поиска геокода, пока не найдете подходящие магазины.
  2. Найдите ближайший магазин или группу магазинов, которые вы хотите использовать.
  3. Получить текущие границы с карты: Map.getBounds().
  4. Вызовите LatLngBounds.extend, чтобы настроить границы, используя свойство .geometry.location магазинов, выбранных на шаге 2.
  5. Вызовите Map.panToBounds, чтобы изменить область просмотра карты, чтобы упростить работу пользователя, потому что будет выполнено только одно изменение вида.
person Sean Mickey    schedule 15.05.2012