La mia app dispone attualmente di una ricerca locale che aggiunge annotazioni per i risultati della ricerca. Voglio impostarlo dove, quando selezioni l'annotazione e fai clic sul pulsante di chiamata, si aprirà nell'applicazione Maps con le indicazioni per l'annotazione dalla posizione corrente del dispositivo. Sto avendo qualche problema con questo.Swift - Indicazioni per l'annotazione selezionata dalla posizione corrente in Maps
Prima di tutto, il pulsante di chiamata sull'annotazione non viene visualizzato. In secondo luogo, non penso di rilevare correttamente l'annotazione selezionata.
Ecco il mio codice per la ricerca e la scelta della nota:
func performSearch() {
matchingItems.removeAll()
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText.text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler({(response:
MKLocalSearchResponse!,
error: NSError!) in
if error != nil {
println("Error occured in search: \(error.localizedDescription)")
} else if response.mapItems.count == 0 {
println("No matches found")
} else {
println("Matches found")
for item in response.mapItems as! [MKMapItem] {
println("Name = \(item.name)")
println("Phone = \(item.phoneNumber)")
self.matchingItems.append(item as MKMapItem)
println("Matching items = \(self.matchingItems.count)")
var annotation = MKPointAnnotation()
var coordinates = annotation.coordinate
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
self.mapView.addAnnotation(annotation)
}
}
})
}
func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!,
calloutAccessoryControlTapped control: UIControl!) {
if self.mapView.selectedAnnotations?.count > 0 {
if let selectedLoc = self.mapView.selectedAnnotations[0] as? MKAnnotation {
println("Annotation has been selected")
let currentLoc = MKMapItem.mapItemForCurrentLocation()
let mapItems = NSArray(objects: selectedLoc, currentLoc)
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
MKMapItem.openMapsWithItems([selectedLoc, currentLoc], launchOptions: launchOptions)
}
}
}
Qualsiasi aiuto sarà apprezzato, grazie in anticipo.
In qualche modo ho downvoted questa risposta senza nemmeno sapere (qualcuno stava giocando con il mio telefono). Mi scuso per quello. Ora non posso annullare. Se vuoi puoi fare una modifica in modo da poterlo ripristinare. –
@flashadvanced: Nessun problema, grazie per averlo spiegato. – Anna
Grazie mille per l'aiuto! La mia ultima domanda è ... Come posso assegnare la vista alle annotazioni create in 'performSearch()'? Dopo aver aggiunto il codice ed eseguito, la vista di annotazione è ancora il pin rosso predefinito. – Alec