代码之家  ›  专栏  ›  技术社区  ›  kcamp

从地图上的注释获取方向

  •  1
  • kcamp  · 技术社区  · 7 年前

    我试图从地图上找到的任何注释中获取方向。我正在使用 CloudKit 作为一个数据库来存储我的所有用户信息。注释使用 location 索引in CloudKit公司 在地图上标出他们的位置。每次运行代码时,注释返回为nil,如何让代码从注释中识别位置并从apple maps返回方向?

    @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)
    
    
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Rob    7 年前

    有两种选择:

    1. 您可以使用 MKDirections 在应用程序中获取正确的方向,而无需使用地图应用程序。

    2. 您还可以将其传递到地图应用程序(如上面的示例),以便用户可以享受完整的实时导航(请参阅流量等)。

    但您没有使用“在地图中打开”API在应用程序中返回方向。使用 mk方向 为此。


    在代码段中,您正在执行以下操作:

    let view = MKAnnotationView()
    

    这将创建一个空白的注释视图(没有注释),因此显然,如果您试图为其获取注释,它没有注释。你可能想

    • 保存添加到地图视图的原始注释并使用该注释;
    • 响应其中一个 MKMapViewDelegate 方法和使用 annotation 对于地图视图上的注释视图;或
    • 返回最初创建注释的原始数据源,并从中创建新注释(不是注释视图)。

    但是不要尝试创建一个新的空白注释视图,并尝试为其检索注释视图,因为它没有注释视图。