从地图上的注释获取方向
Getting Directions From an Annotation on the Map
我正在尝试从我的地图上找到的任何注释获取方向。我正在使用 CloudKit
作为数据库来存储我所有用户的信息。注释使用 CloudKit
中的 location
索引在地图上标出它们的位置。每次我 运行 我的代码时,注释返回为 nil,我如何让我的代码识别注释中的位置和苹果地图中的 return 方向?
@IBAction func getDirections(_ sender: Any) {
let view = MKPointAnnotation().coordinate
print("Annotation: \(String(describing: view ))")
let currentLocMapItem = MKMapItem.forCurrentLocation()
let selectedPlacemark = MKPlacemark(coordinate: view, addressDictionary: nil)
let selectedMapItem = MKMapItem(placemark: selectedPlacemark)
let mapItems = [selectedMapItem, currentLocMapItem]
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
MKMapItem.openMaps(with: mapItems, launchOptions:launchOptions)
}
有两种选择:
您可以使用 MKDirections
在您的应用程序中获取路线,而无需转到地图应用程序。
您还可以将其传递给地图应用程序(如上面的示例),以便用户可以享受完整的实时导航(查看路况等)。
但是您没有在您的应用中使用“在地图中打开”API 到 return 的指示。为此使用 MKDirections
。
在您的代码片段中,您正在做:
let view = MKAnnotationView()
这会创建一个空白注释视图(没有注释),所以很明显,如果您尝试为其获取注释,它是没有的。您可能想要
- 保存您添加到地图视图的原始注释并使用它;
- 响应其中一种
MKMapViewDelegate
方法并使用 annotation
用于地图视图上的注释视图;或
- 返回到最初创建注释的原始数据源,并从中创建一个新注释(不是注释视图)。
但是不要尝试创建一个新的空白注释视图并尝试为其检索注释视图,因为它不会有一个。
我正在尝试从我的地图上找到的任何注释获取方向。我正在使用 CloudKit
作为数据库来存储我所有用户的信息。注释使用 CloudKit
中的 location
索引在地图上标出它们的位置。每次我 运行 我的代码时,注释返回为 nil,我如何让我的代码识别注释中的位置和苹果地图中的 return 方向?
@IBAction func getDirections(_ sender: Any) {
let view = MKPointAnnotation().coordinate
print("Annotation: \(String(describing: view ))")
let currentLocMapItem = MKMapItem.forCurrentLocation()
let selectedPlacemark = MKPlacemark(coordinate: view, addressDictionary: nil)
let selectedMapItem = MKMapItem(placemark: selectedPlacemark)
let mapItems = [selectedMapItem, currentLocMapItem]
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
MKMapItem.openMaps(with: mapItems, launchOptions:launchOptions)
}
有两种选择:
您可以使用
MKDirections
在您的应用程序中获取路线,而无需转到地图应用程序。您还可以将其传递给地图应用程序(如上面的示例),以便用户可以享受完整的实时导航(查看路况等)。
但是您没有在您的应用中使用“在地图中打开”API 到 return 的指示。为此使用 MKDirections
。
在您的代码片段中,您正在做:
let view = MKAnnotationView()
这会创建一个空白注释视图(没有注释),所以很明显,如果您尝试为其获取注释,它是没有的。您可能想要
- 保存您添加到地图视图的原始注释并使用它;
- 响应其中一种
MKMapViewDelegate
方法并使用annotation
用于地图视图上的注释视图;或 - 返回到最初创建注释的原始数据源,并从中创建一个新注释(不是注释视图)。
但是不要尝试创建一个新的空白注释视图并尝试为其检索注释视图,因为它不会有一个。