Хм. Похоже, что вы обновляете свою карту, удаляя все аннотации, а затем (повторно) отображая все аннотации, попадающие в visibleMapRect
- и решение этой проблемы может потребовать более детального подхода к обновлению карты.
Один из подходов может заключаться в использовании MKMapRectIntersection
для определения перекрытия между вашими "старыми" и "новыми" visibleMapRect
с, и (если он есть) исключает возможность удаления или повторного добавления аннотаций в этом регионе. , Или вы можете рассчитать L-образную область, которая прокручивается на экране, и выполнять только HTML-вызов для данных в этой области.
Или вы можете просто проверить, находится ли «старый» центр карты в пределах visibleMapRect
, и, если это так, произвольно решить, что карта не сдвинулась на значительную величину. Это может привести к тому, что на экране появятся области, которые должны иметь аннотации, но, тем не менее,
Или, наконец, вы можете просто сохранить координату выбранной пользователем аннотации, и, если эта координата все еще отображается на экране после перемещения карты, найдите ее и повторно выберите аннотацию.