Странное поведение аннотаций пин-кода MapKit
Когда я размещаю 5-контактный вывод на mapView с тем же адресом, но всплывающая подсказка отображается только для двух-контактного вывода, когда мы нажимаем на выбранный вид аннотации. Когда я нажимаю на пин-код, тогда выноска отображается только для двух контактов.
Как решить эту проблему, я хочу показать выноску всех контактов, даже если они имеют одинаковый адрес.
2 ответа
Перед добавлением каждой аннотации на карту необходимо проверить, есть ли уже другая аннотация в том же месте или в пределах нескольких метров. Если это так, то объедините данные для этих аннотаций в структуру, которая может расти (NSMutableArray является моим первым предположением), а затем добавьте эти объединенные данные в качестве новой аннотации *. Затем, когда касание булавки будет выполнено, он запросит детали вызова и сообщит вам, какая аннотация была нажата, вы можете проверить, имеет ли аннотация один элемент данных или несколько данных, при правильной настройке выноски. Вам понадобится собственный класс аннотаций, но, возможно, он вам понадобится в любом случае, если вы храните полезные данные о каждом из них.
* вам также необходимо убедиться, что первая аннотация не оставлена на карте, поэтому, возможно, вы могли бы выполнить сканирование своих данных и объединить их в массивы, прежде чем делать какие-либо аннотации. Каждая аннотация будет хранить массив значений, большинство из них будет иметь только одно значение, но там, где они расположены слишком близко друг к другу, массив будет иметь много значений, и ваша вызывающая функция должна будет отображать это.
Это происходит потому, что уровень масштабирования вашей карты не соответствует вашим требованиям к координатам. Несмотря на то, что вы пометили пять пинов по одному и тому же адресу, в координатах должна быть небольшая разница, чтобы разделиться
Вы должны работать с longitudeDelta и latitudeDelta, чтобы преодолеть это.
Например Вы можете установить
<coordinate_object>.latitudeDelta = 0.04;
<coordinate_object>.longitudeDelta = 0.04;
Чем меньше значение дельты, тем выше уровень масштабирования и наоборот.
Наслаждайтесь программированием!