Ho due annotazioni da visualizzare sulla mappa, ma non riesco a impostare maprect per visualizzarle tutte sullo schermo senza che gli utenti debbano effettuare lo zoom indietro.Impossibile impostare maprect per mostrare tutte le annotazioni
Ho provato con showAnnotations
ma senza fortuna. Qualcuno è stato in grado di farlo in Swift e Xcode 6.1.1?
Ecco il mio codice:
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
var mapView = map
// 1
let point1 = CLLocationCoordinate2D(latitude: 38.915565, longitude: -77.093524)
let point2 = CLLocationCoordinate2D(latitude: 38.890693, longitude: -76.933318)
//2
let annotation = MKPointAnnotation()
annotation.setCoordinate(point1)
annotation.title = "point1"
map.addAnnotation(annotation)
let annotation2 = MKPointAnnotation()
annotation2.setCoordinate(point2)
annotation2.title = "point2"
map.addAnnotation(annotation2)
//3
// option1: set maprect to cover all annotations, doesn't work
var points = [annotation, annotation2]
var rect = MKMapRectNull
for p in points {
let k = MKMapPointForCoordinate(p.coordinate)
rect = MKMapRectUnion(rect, MKMapRectMake(k.x, k.y, 0.1, 0.1))
println("result: x = \(rect.origin.x) y = \(rect.origin.y)")
}
map.setVisibleMapRect(rect, animated: true)
// option 2: using showAnnotations, doesn't work
//map.showAnnotations(points, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Questo è quello che ho ottenuto al momento:
Questo è quello che mi aspettavo di vedere:
Grazie per il vostro aiuto.
Puoi spiegare cosa intendi esattamente dicendo "showAnnotations" "non funziona"? Che succede? Per 'setVisibleMapRect', potresti voler applicare un ** riquadro ** (vedi http://stackoverflow.com/a/22070026/467105 per un esempio). Inoltre, hai implementato 'viewForAnnotation' che mostra un'immagine personalizzata per le annotazioni ma nello screenshot che ti aspetti, mostra i pin rossi predefiniti. Perché ti aspetti i pin rossi di default? – Anna
Anna, cosa intendevo per "non funziona" per showAnnotations è che non mostrava tutti i pin come nella schermata prevista. – tala9999
Il codice con showAnnotations sembra corretto. Se preferisci setVisibleMapRect, aggiungi un riquadro. _Commenta completamente il metodo viewForAnnotation durante il test dello zoom. Una volta che lo zoom è stato risolto, quindi correggere il problema con viewForAnnotation._ Se non vengono visualizzati pin, assicurarsi che venga chiamato viewForAnnotation (assicurarsi che sia impostato il delegato della mappa, assicurarsi che il file di immagine esista). – Anna