2009-03-16 3 views
5

Я разрабатываю приложение Google Maps, и я столкнулся с этой проблемой. Мне нужно удалить все маркеры, которые находятся за пределами карты.Определение того, отображается ли маркер в Картах Google

Есть ли простой способ сделать это, помимо хранения массива и просмотра latlng каждого маркера?

Я не могу использовать MarkerManager, потому что у меня слишком много точек. Я не хочу использовать clearOverlays(), потому что он закрывает любой открытый маркер.

Любая помощь будет оценена по достоинству.

ответ

4

Если вы не хотите смотреть на каждый маркер отдельно, сначала сгруппируйте их в несколько наборов и вычислите границы набора.

Затем вы можете отображать или скрывать наборы в зависимости от того, что в данный момент отображается на карте (вы можете найти границу карты с помощью GMap2.getBounds()).

Сколько очков мы говорим?

Update

А. О 65К.

Я вижу, почему вы не можете создавать 65K GMarkers, когда страница загружается. Это займет более 5 секунд.

Я бы сгруппировал их в группы из 200 иш, и когда край группы попадает в ширину карты 1/4 за пределами отображаемого края, найдите, создайте маркеры и покажите соседнюю группу. Это выходит за пределы ширины карты внешнего края, а затем скрывает группу.

Других альтернатив использовать библиотеку третьей стороны, например

+0

6оК, но я никогда не покажу более 300, в то время – Sklivvz

+0

Спасибо за подсказку, другая проблема заключается в том, что загрузка информации для генерации маркеров 65k займет слишком много времени ... – Sklivvz

+0

Группируйте их на стороне сервера и загружайте групповые границы в начальной загрузке страницы. Затем вы можете загрузить точки на лету, используя AJAX, когда группы приближаются к отображаемой части карты. – RichH

Смежные вопросы