2017-05-24 1 views
0

Ich machte eine Demo zum Zoomen aller Pins, die auf der Karte platziert sind.So zoomen Sie den Map-Pin-Bereich mit zoomRect in MKMapview und deaktivieren Sie die aktuelle Position Klicken Sie auf Ereignis?

1) Ich habe zoomRect zum Zoomen aller Pins für Sichtbarkeit verwendet, aber es wird nicht richtig angezeigt.

2) Die zweite Frage ist, ich meine aktuellen Standort sowie alle Pins bekam, wenn ich auf dem Stift klicken es gibt mir alle Details zu diesem Stift, Aber wenn ich auf aktuellen Standort Stift klicken Es war abgestürzt Geben Sie mir eine Lösung, ich möchte nicht auf meine aktuelle Position klicken Pin Wie kann ich Click-Ereignis deaktivieren und entfernen.

ich verwendet habe: -

if (annotation == mapView.userLocation) 
    { 
     return nil; 
    } 

aber es wird nur Stift nicht verstecken Stift deaktivieren.

mein Code

MKMapRect zoomRect = MKMapRectNull; 
     for (id <MKAnnotation> annotation in self.mapViewMap.annotations) 
     { 
      MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
      MKMapRect pointRect = MKMapRectMake(annotationPoint.x , annotationPoint.y ,0.1, 0.1); 
      zoomRect = MKMapRectUnion(zoomRect, pointRect); 
     } 
     [self.mapViewMap setVisibleMapRect:zoomRect animated:YES]; 

Bild ausgegeben

enter image description here

Erwartete Ausgabe ist wie

enter image description here

Vielen Dank im Voraus, ich hoffe, dass Sie mir geben werden Antwort für beide. Vielen Dank.

Antwort

0

Für 1), können Sie die eingebaute Funktion showAnnotations:animated:see documentation Andernfalls nutzen könnten, könnten Sie dies versuchen:

func zoomToAllAnnotations() { 
    // Exclude if you don't want to include the user's location 
    let annotationPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate) 
    var zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
    for annotation in mapView.annotations { 
     let annotationPoint = MKMapPointForCoordinate(annotation.coordinate) 
     let pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
     zoomRect = MKMapRectUnion(zoomRect, pointRect) 
    } 
    mapView.setVisibleMapRect(zoomRect, animated: true) 
} 

In Bezug auf 2), Sie pinView.canShowCallout = false für Ihre Current Annotation versuchen könnte. Hier ist link to documentation.

Verwandte Themen