2012-05-15 2 views
0

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

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

Выше было хорошо, но было бы лучше UX, если бы карта сделала фактически не отображаются, пока не будут найдены некоторые магазины.

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

Я не уверен, что это возможно, потому что это зависит от ширины карты 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? 
    } 
} 

ответ

0

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

С этим, Вы можете:

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