У меня была похожая проблема, и я решаю ее следующим образом
Сначала внедрите regionDidChangeAnimated в делегате вашей карты
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
calculateZoomFactor()//Create global var named zoomFactor
print("*************************")
if zoomFactor > x { //Change the x value as you wish
print("Zoom close, you can remove your annotations, and create with new image2")
} else {
print("Zoom out, remove annotations, and add new annotations with image 1")
}
print("*************************")
}
И это мой пользовательский калькулятор zoomFactor
func calculateZoomFactor() {
let zoomWidth = mapView.visibleMapRect.size.width
let zoomFactor = (log2(zoomWidth)) - 8.785//You can change this constant also
self.zoomFactor = zoomFactor
}