如何使用UIActivityViewController共享经度和纬度

如何使用UIActivityViewController共享经度和纬度

问题描述:

我想分享与UIActivityViewController中的位置相关联的(经度,纬度),以便用户可以与其他人分享短信中的位置,并将其显示为可点击的小地图如下所示。如何使用UIActivityViewController共享经度和纬度

我知道如何分享地址作为文本。这里是我的共享地址码:

@IBAction func didTapShareLocation(_ sender: UIButton) { 
    guard let carAddress = self.adressLabel.text else { 
     return 
    } 
    let textToShare = "My car is at this address: \(carAddress)" 

    let objectsToShare = [textToShare] as [Any] 
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) 

    activityVC.popoverPresentationController?.sourceView = sender 
    myParentVC?.present(activityVC, animated: true, completion: nil) 

} 

enter image description here

+0

我建议你检查下面的[搜索结果](http://*.com/search?q=UIActivityViewController+location)。 – rmaddy

这里是雨燕3.1一个完整的答案,我从好几个地方获得的信息后放在一起。我希望它能帮助别人。

@IBAction func didTapShareLocation(_ sender: UIButton) { 
    guard let carAddress = self.adressLabel.text, let lat = self.carCoordinates?.latitude, let lon = self.carCoordinates?.longitude else { 
     return 
    } 

    guard CLLocationCoordinate2DIsValid(self.carCoordinates!) else { 
     print("Location not valid!") 
     return 
    } 

    let carAddressString = "My car is at this address: \n\(carAddress)\n" 

    let vcardString = [ 
     "BEGIN:VCARD", 
     "VERSION:3.0", 
     "N:;Shared Location;;;", 
     "FN:Shared Location", 
     "item1.URL;type=pref:http://maps.apple.com/?ll=\(lat),\(lon)", 
     "item1.X-ABLabel:map url", 
     "END:VCARD" 
     ].joined(separator: "\n") 

    let directory = FileManager().urls(for: .cachesDirectory, in: .userDomainMask) 

    let path = directory.first!.path + "_vcard_for_location_sharing.loc.vcf" 
    do { 
     try vcardString.write(toFile: path, atomically: true, encoding: .ascii) 
     let url = NSURL(fileURLWithPath: path) 

     let objectsToShare = [url, carAddressString] as [Any] 
     let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) 

     activityVC.popoverPresentationController?.sourceView = sender 
     self.present(activityVC, animated: true, completion: nil) 

    } 
    catch { 
     print("problem saving vcard: \(error.localizedDescription)") 
    } 
}