【问题标题】:How to get full list of address components with Google Maps iOS SDK如何使用 Google Maps iOS SDK 获取地址组件的完整列表
【发布时间】:2017-02-28 19:21:04
【问题描述】:

早上好!

我目前正在开发一个需要我使用 Google 地图的反向地理编码功能的 iOS 应用程序。棘手的部分是我需要能够访问地址组件的完整列表(即从this example 返回的 JSON 中的完整“address_components”值,包括短名称和长名称)

使用 Google Maps iOS SDK 时,反向地理编码的所有结果似乎都以GMSAddress 的形式给出,它只公开了这些值的一小部分(并且没有短版本)。到目前为止,我还没有找到一种方法来访问我需要的东西。

有没有办法通过 iOS SDK 获取这些值?如果没有,可以尝试直接调用 google maps API 吗?有人试过吗?

感谢您的宝贵时间,

朱利安 P.

【问题讨论】:

    标签: ios google-maps google-maps-sdk-ios reverse-geocoding


    【解决方案1】:

    我正在开发一款这样的应用程序...我不了解 iOS SDK。

    但是,Google API 将对此有所帮助。本教程在此处获取您单击的位置的地址: https://www.raywenderlich.com/109888/google-maps-ios-sdk-tutorial

    您将无法直接调用 Google API。您需要为此添加服务器。本教程提供了一种详细而清晰的方法。

    希望这会有所帮助。万事如意

    【讨论】:

      【解决方案2】:

      我找到了一个使用 iOS 的 LMGeocoder 库的简单解决方案。

      LMAddress 内部,有一个lines 属性将包含所有信息。您可以使用以下代码轻松访问它。

      func getAddressComponent(name: String, lines: [[NSObject: AnyObject?]]) -> (short: String?, long: String?)? {
      
          let filteredLines = lines.filter { ($0["types"] as! [String]).contains(name)
      
          guard let line = filteredLines.first else {
              return nil
          }
      
          let longName = line["long_name"] as? String
          let shortName = line["short_name"] as? String
      
          return (short: shortName, long: longName)
      }
      

      这是使用 Swift 2.3 但可能也适用于 Swift 3。希望它可以帮助任何人! :)

      朱利安

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多