用于 kml 和文本文件的 UIActivityViewController

Posted

技术标签:

【中文标题】用于 kml 和文本文件的 UIActivityViewController【英文标题】:UIActivityViewController for a kml and text files 【发布时间】:2020-04-06 14:04:05 【问题描述】:

我使用以下代码在 iPhone 应用程序上保存几个文件。一个是带有经度和纬度列表的纯文本文件。第二个文件与 KML 代码相同,以显示具有相同坐标的地标。该代码可按预期生成带有 .txt 扩展名的两个文件。我想做的是生成两个不同的扩展名,.txt 用于纯文本文件,.kml 用于第二个。 .kml 扩展名的原因是能够在 iPhone 上的 Google 地球应用程序中显示这些坐标。任何帮助将不胜感激...

    let activityViewController = UIActivityViewController(activityItems: [kml, locations], applicationActivities: nil)
    present(activityViewController, animated: true, completion: nil)``

两个数组activityViewController分别包含kml和文本代码。

【问题讨论】:

【参考方案1】:

这是我解决它的方法...我确信这不是最有效的方法,但它有效:-)。仍在寻找一种更有效的方法,因为此方法会生成一个临时文件,从而增加了应用程序开销……此外,用户必须保存文件两次,一次用于 kml,一次用于文本文件。所以无论如何,希望它可以帮助其他人。

    let kmlFile = "soofie_loc.kml"
    let tmpDir = FileManager.default.temporaryDirectory
    var fileURL : URL?
    fileURL = tmpDir.appendingPathComponent(kmlFile)
    let data = Data(kml.utf8)
    do 
        try data.write(to: fileURL! , options: .atomic)
     catch 
        print(error)
    


    //let activityViewController = UIActivityViewController(activityItems: [kml, locations], applicationActivities: nil)
    if ( !kmlOption ) 
        let activityViewController = UIActivityViewController(activityItems: [locations], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    
    else 
        let activityViewController = UIActivityViewController(activityItems: [fileURL!], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    

【讨论】:

以上是关于用于 kml 和文本文件的 UIActivityViewController的主要内容,如果未能解决你的问题,请参考以下文章

Google Earth中的地标文件kml与kmz有何区别?

GlobalMapper精品教程017:KML generator快速将坐标转为KML文件

Google Maps API 和 KML 文件 LocalHost 开发选项

怎么把坐标信息的Excel文件转换为KML文件

R语言--KML格式转换为GPX

ArcGIS使用模型构造器批量转换KML格式