2016-09-14 13 views
9

Próbuję określić znacznik/s aktualnie wyświetlany w widoku mapy. I zbadali następujące metody:Znajdowanie znaczników wyświetlanych na mapie Wyświetl

self.mapView.bounds.contains(markers[0].position)

Ale komenda contains akceptuje CGPoint lub CGRect. Na innych platformach, z wyjątkiem Swift, contains może zaakceptować pozycję znacznika.

Jak przekonwertować pozycję znacznika do zaakceptowania przez contains?

Odpowiedz

7

Użyj aktualnego widoku mapy projection. Użyj metody odwzorowania o nazwie containsCoordinate, aby sprawdzić, czy pozycja znacznika znajduje się wewnątrz rzutu, a obecnie jest widoczna a.k.a.

Więc coś takiego:

let coord = marker.position 
let isVisible = self.mapview.projection.containsCoordinate(coord) 

https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_projection.html#aa6ad29e6831e40f00435c3aaeda8e08a

+0

Alternatywnie możesz spróbować przekonwertować pozycje znacznika na punkty ekranu za pomocą projekcji. – Juul

2

W MapKit:

Przypuszczam ze znacznikiem ty oznaczać MKAnnotation. Zamiast używać granic mapView należy użyć visibleMapRect i sprawdzić, czy zawiera on współrzędne znacznika w MKMapPoints. Jest to kod użyłem:

let markerPoint = MKMapPointForCoordinate(markers[0].coordinate) 
if MKMapRectContainsPoint(mapView.visibleMapRect, markerPoint) { 
    print("Found") 
} else { 
    print("Not found") 
} 

gdy współrzędne markerów są widoczne (innymi słowy, jest wyświetlany znacznik) Tylko to będzie drukować „Found”. Jeśli poza ekranem, wyświetli "Nie znaleziono".

+0

zdałem sobie sprawę, że tagged "google-maps-sdk-ios", miałem na myśli 'MapKit'. Przepraszam za to. Proszę wyjaśnić w pytaniu, ponieważ oba interfejsy API są bardzo podobne. – Christoph

Powiązane problemy