我的應用程序當前有一個本地搜索,爲搜索結果添加註釋。我想在選擇註釋並單擊呼出按鈕的地方進行設置,它將在地圖應用程序中打開,並指示當前設備位置的註釋。我遇到了一些問題。Swift - 從當前位置在地圖中選擇註釋的方向
首先,我沒有出現註釋按鈕。其次,我不認爲我正在檢測選定的註釋。
這裏是我的搜索和選擇的註釋代碼:
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)
}
}
}
任何幫助將提前讚賞,感謝。
不知怎的,我downvoted這個答案,甚至不知道(有人用我的手機打)。我爲此道歉。現在我無法撤消。如果你想要,你可以做一個編輯,這樣我可以恢復這個。 –
@flashadvanced:沒問題,謝謝你解釋。 – Anna
非常感謝您的幫助!我的最後一個問題是......我如何將視圖分配給'performSearch()'中創建的註釋?添加代碼並運行後,註釋視圖仍然是默認的紅色引腳。 – Alec