我现在正在做一个项目,卡在了最后一部分。我设计了一个带有 20 个自定义注释的应用程序,我们的婚礼宾客可以使用它来查找附近的餐馆、酒吧、咖啡店等。有各种自定义注释来识别每个位置。它还会询问用户当前位置,以便他们可以找到附近的东西。我希望能够单击注释,让我们的 friend 和家人能够获得从他们当前位置到注释的方向。似乎最好的方法是在我的自定义点注释中使用我的经纬度坐标打开苹果 map 应用程序。我的代码似乎根本没有打开那个 map 应用程序。我添加了一个正确的调用,我已经查看了所有关于这个问题的新旧问题,但找不到解决方案。任何建议将不胜感激,因为这是我的第一个真正的 swift 应用程序。下面是我当前的开放方向功能。预先感谢您提供任何帮助或见解。
func openDirections(_ address :String?) {
self.geocoder.geocodeAddressString(address!, completionHandler: { (placemarks :[CLPlacemark]?, error :NSError?) -> Void in
let placemark = placemarks![0] as CLPlacemark
let destinationPlacemark = MKPlacemark(coordinate: placemark.location!.coordinate, addressDictionary: placemark.addressDictionary as? [String:NSObject])
let mapItem = MKMapItem(placemark: MKPlacemark(coordinate: placemark.location!.coordinate, addressDictionary:nil))
mapItem.openInMaps(launchOptions: [MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving])
let startingMapItem = MKMapItem.forCurrentLocation()
let destinationMapItem = MKMapItem(placemark: destinationPlacemark)
let directionsRequest = MKDirectionsRequest()
directionsRequest.transportType = .automobile
directionsRequest.source = startingMapItem
directionsRequest.destination = destinationMapItem
let directions = MKDirections(request: directionsRequest)
directions.calculate(completionHandler: { (response :MKDirectionsResponse?, error :NSError?) -> Void in
let route = response!.routes[0] as MKRoute
if route.steps.count > 0 {
for step in route.steps {
print(step.instructions)
}
}
self.mapView!.add((route.polyline), level: MKOverlayLevel.aboveRoads)
} as! MKDirectionsHandler)
} as! CLGeocodeCompletionHandler)
}
最佳答案
继续删除您编写的所有内容,并研究如何编写一个新的、更好的、更简洁的函数。以下是对我有用的方法,我希望它能帮助其他人。
func mapView(_ mapView: MKMapView, annotationView view:MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let placemark = MKPlacemark(coordinate: view.annotation!.coordinate, addressDictionary: nil)
let mapItem = MKMapItem(placemark: placemark)
let launchOptions = [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeTransit]
self.title = title
mapItem.name = title
mapItem.openInMaps(launchOptions: launchOptions)
}
关于ios - 打开方向功能不以编程方式打开苹果 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42473881/