Je suis en train de faire une annotation qui sera redimensionnableRedimensionner MKAnnotationView avec MKZoomScale - Swift 2.0
J'ai une annotation personnalisée que j'ai créé
class MapAnnotation: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var image: UIImage? = UIImage(named: "image")
init(coordinate: CLLocationCoordinate2D) {
self.coordinate = coordinate
}
}
et annotationView qui comprend l'image.
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
if let annotation = annotation as? MapAnnotation {
var pin = mapView.dequeueReusableAnnotationViewWithIdentifier("myCustomAnnotation")
if pin == nil {
pin = MKAnnotationView(annotation: annotation, reuseIdentifier: "myCustomAnnotation")
}
pin!.image = annotation.image
return pin
}
return nil
}
Et lorsque je redimensionne le mapView, je veux que le MKAnnotationView soit également redimensionné.
Je sais que MKOverlayRenderer a la fonction drawMapRect(mapRect: MKMapRect, zoomScale: MKZoomScale, inContext context: CGContext)
qui inclut le paramètre zoomScale: MKZoomScale.
De plus, je vis cette solution:
let zoomScale: MKZoomScale = mapView.bounds.size.width/
CGFloat(mapView.visibleMapRect.size.width)
Mais je veux l'accès à la MKZoomScale
dans la fonction drawMapRect
et non la façon de personnaliser. Cela signifie que je dois faire un MKOverlayRenderer à la place de MKAnnotationView que je ne veux pas, parce que MKOverlay dessine sur la carte et que je veux faire une annotationView, qui n'est pas dessinée sur la carte. Après cela, je vais avoir le MKZoomScale Je veux redimensionner l'annotationViews entre MKZoomScale 1 à 0,25 et si le MKZoomScale est inférieur à 0,25 je veux que les annotationsViews disparaissent.
Merci de votre aide!
est juste que MKZoomScale dans la fonction 'drawMapRect (mapRect: MKMapRect, zoomScale: MKZoomScale, contexte inContext: CGContext)' vous donnant une zoomScale par défaut que je veux utiliser. Si je voulais utiliser MKCoordinateSpan, je l'utiliserais déjà. Vous pouvez essayer d'utiliser la fonction 'drawMapRect' et imprimer le' zoomScale', et par là vous pouvez voir de quoi je parle. – KillerDeveloper