Найти маркеры, показанные в mapView
Я пытаюсь определить маркер/s, отображаемый в настоящее время в mapview. Я исследовал следующий метод:
self.mapView.bounds.contains(markers[0].position)
но contains
команда принимает CGPoint или CGRect. На других платформах, кроме Swift,contains
может принять положение маркера.
как преобразовать позицию маркера для принятия contains
?
2 ответов
используйте текущий mapview projection
. Используйте метод проекцииcontainsCoordinate
чтобы проверить, находится ли положение маркера внутри проекции, a.к. a. в настоящее время виден.
что-то вроде:
let coord = marker.position
let isVisible = self.mapview.projection.containsCoordinate(coord)
В MapKit:
Я предполагаю, что с маркером Вы имеете в виду MKAnnotation
. Вместо использования границ mapView
вы должны использовать visibleMapRect
и посмотреть, содержит ли он координаты маркера в MKMapPoints
. Это код, который я использовал:
let markerPoint = MKMapPointForCoordinate(markers[0].coordinate)
if MKMapRectContainsPoint(mapView.visibleMapRect, markerPoint) {
print("Found")
} else {
print("Not found")
}
только когда координаты маркеров видны (другими словами, маркер отображается), это будет печатать "найдено". Если за пределами экрана, он будет печатать "не найден".