Слияние дочерних представлений MapView, когда они перекрываются

Я использую MapView и мне нужно отобразить на нем сложные выводы. Я добавляю булавку на карту, используя addView() с MapView.LayoutParams с MODE_MAP. Итак, взгляды на карту движутся вместе с картой.

Я добавляю около 20 булавок, и когда я уменьшаю масштаб карты, булавки перекрывают друг друга.

Как объединить перекрывающиеся контакты в один?

УПД 1:

Для каждого контакта я знаю прямоугольник, который он помещает в MapView. Существует ли быстрый алгоритм для поиска перекрывающихся прямоугольников?


person Nik    schedule 04.10.2012    source источник


Ответы (1)


Вы можете проверить перекрытие реактивного угла с помощью:

Rect rect1, rect2;
if(rect1.intersect(rect2)
  //do something

В этом сообщении есть хороший алгоритм объединения контактов, когда они перекрываются: Объединение пинов

удачи.

person Luis    schedule 04.10.2012
comment
Алгоритм слияния пинов неприменим для моего случая, я не могу переопределить метод рисования, т.е. я не использую наложение для добавления элементов на карту. rect1.intersect(rect2) - я знаю этот метод, но мне нужно проверить 20 или более (до 200) прямоугольников, перекрывающихся, и мне нужен быстрый алгоритм для этого. - person Nik; 05.10.2012