Как получить маркеры внутри области, выбранной перетаскиванием мыши?

Кратко
Я хочу найти все маркеры, лежащие в прямоугольной области, созданной путем перетаскивания курсора мыши по карте. Поддерживается ли эта функция какими-либо плагинами jQuery или чем-то еще? Если нет, я хотел бы реализовать это в своем проекте. Я думаю, это было бы круто.

Подробности
Я использую Google Maps v2, потому что хочу поддерживать IE 6 в своем проекте.

Я новичок в Картах и ​​ознакомился с разделом руководства для разработчиков и некоторые основные демонстрации и другие вопросы SO.

Вот моя идея на данный момент -

  • Пользователь нажимает кнопку «Выбрать область» в разделе управления картой. Это вызывает disableDragging(), и пользователь готов сделать выбор. (Может быть http://code.google.com/apis/maps/documentation/javascript/v2/controls.html#Custom_Controls дает некоторое представление о том, как это сделать)

  • Затем пользователь делает выбор области. Отмечаются начальная и конечная точки выделения, и, предполагая, что они являются двумя противоположными углами прямоугольника, находятся маркеры внутри него. Но пока я не видел никакого работающего кода для получения координат точки клика. Я думаю, что лучше использовать широту/долготу в качестве координат вместо фактических координат x-y. В этом вопросе Google Maps API с использованием плагина jQuery: как получить широту и долготу маркера при щелчке? обсуждается получение широты/долготы маркера при нажатии на него, но я еще не пробовал.

Резюме
Вот мои вопросы снова -

  • Как отобразить прямоугольную область выбора на карте? (обычно светло-серый и прозрачный)

  • Как получить широту/язык (широту/долготу) выбранной точки, а затем расширить ее, чтобы получить начальную и конечную точки выбора.

У меня есть опыт работы с jQuery, и если есть хорошие решения с плагинами jQuery, пожалуйста, дайте мне знать. Я видел этот список из 10 jQuery Плагины для упрощения установки карт Google, но не уверен, что какой-либо из них поможет мне удовлетворить мои требования.

Когда у меня есть список маркеров, я хотел бы заполнить некоторую связанную информацию в отдельном разделе отображения, чтобы каждый раз, когда пользователь выбирает некоторые маркеры, соответствующая информация отображалась в разделе отображения. Эта часть должна быть проще.

Спасибо


person Sandeepan Nath    schedule 08.05.2011    source источник


Ответы (1)


Вы можете посмотреть пример KeyDragZoom в разделе < href="http://code.google.com/intl/tr-TR/apis/maps/documentation/javascript/v2/demogallery.html" rel="nofollow">демонстрационную галерею API Карт Google для добиться прямоугольной функции выбора. Документацию можно найти здесь.

Для второй задачи вы можете использовать класс GLatLngBounds и его функцию containsLatLng(latlng:GLatLng). Установив свой объект GLatLngBounds на границы прямоугольника, вы можете проверить свои маркеры на нем с помощью функции containsLatLng.

Если вы решите использовать KeyDragZoom, добавление прослушивателя dragend к getDragZoomObject даст вам объект GLatLngBounds, который вы можете использовать для проверки своих маркеров с помощью функции containsLatLng.

map.enableKeyDragZoom();
var dz = map.getDragZoomObject();
GEvent.addListener(dz, 'dragend', function (bnds) {
  // test your markers against bnds here
});
person solidrevolution    schedule 09.05.2011
comment
Да, это решает проблему. Для части проверки внутри события dragend выше это решение stackoverflow.com/questions/2949486/ можно следовать - person Sandeepan Nath; 11.05.2011