Вам нужно несколько вещей.Одним из них является поиск в вашей базе данных штифтов с широтой и долготой внутри карты.Это называется ограничительной рамкой.Следующее - удалить аннотации, когда они выходят за пределы видимого прямоугольника карты.Каждый раз, когда карта перемещается, вам нужно будет пересчитать, какие булавки находятся в коробке, а какие булавки находятся снаружи, но все еще на карте.
Один совет, который я могу вам дать, - это разделить видимый прямоугольникКарта в квадраты (может быть 17 х 23 квадратов 20 х 20) и выяснить, если булавка входит в этот квадрат.Если это так, пометьте этот квадрат как заполненный, и если другой штифт хочет войти в этот квадрат, не позволяйте ему.Это позволит вам отфильтровать контакты, чтобы на экране не было слишком много изображений за один раз.
Это не простая проблема, но если вы проведете некоторый поиск вокруг, вы найдете выход.Этот код маркера кластера для Карт Google может помочь.