IIDadata 0.2.7

IIDadata 0.2.7

Ilya Yachin 维护。



IIDadata 0.2.7

  • Ilya Yachin

IIDadata

Version Documentation License

此软件包提供对 Dadata 地址建议和反向地理编码 API 的访问权限。

基本用法。

try! DadataSuggestions
    .shared(
        apiKey: "<# Dadata API token #>"
).suggestAddress(
        "Пенза"
        completion: { r in
            switch r {
            case .success(let v):
                print(v)
            case .failure(let e):
                print(e)
            }
    }
)

有大量的其他初始化选项

从使用显式 API 令牌进行初始化开始。

let dadata = DadataSuggestions(apiKey: "<# Dadata API token #>")

通过从 Info.plist 中读取 API 令牌进行初始化。但如果缺失可能会抛出错误。

let dadata = try? DadataSuggestions()

甚至可以使用检查网络连接的方式进行初始化。但是这个初始化不应该在主线程上调用,因为它可能会因为向服务器发送阻塞请求而花费较长时间。如果不可能连接或者请求超时,则抛出错误。

DispatchQueue.global(qos: .background).async {
    let dadata = try? DadataSuggestions(apiKey: "<# Dadata API token #>", checkWithTimeout: 15)
}

无论您如何初始化,您还可以进行更多与该库相关的操作

基本地址建议请求仅在 FIAS 数据库中搜索:匹配项较少,提供地址数据仅限于状态。

dadata?.suggestAddressFromFIAS("Тверская обл, Пеновский р-н, деревня Москва"){ print( try? $0.get().suggestions ) }

基本地址建议请求将 KLADR 或 FIAS ID 作为查询参数查找附加数据。

dadata?.suggestByKLADRFIAS("9120b43f-2fae-4838-a144-85e43c2bfb29"){ print( try? $0.get().suggestions ) }

但是可以通过提供约束和/或设置过滤来创建更复杂的查询。

var constraint = AddressQueryConstraint()
constraint.region = "Приморский"
constraint.city = "Владивосток"
constraint.country_iso_code = "RU"
constraint.region_iso_code = "RU-PRI"

dadata?.suggestAddress(
    "Gogolya 9",
    resultsCount: 5,
    language: .en,
    constraints: [constraint],
    regionPriority: nil,
    upperScaleLimit: .street,
    lowerScaleLimit: .house,
    trimRegionResult: false,
    completion: completion
)

或者手动构建 AddressSuggestionQuery。注意在这个示例中,它是一个使用 FIAS ID 而不是自由文本创建的查询。

let q = AddressSuggestionQuery("9120b43f-2fae-4838-a144-85e43c2bfb29", ofType: .findByID)
q.resultsCount = 1
q.language = .en

dadata?.suggestAddress(q){ try? $0.get().suggestions?.forEach{ print($0) } }

此外,还提供反向地理编码功能。

try? dadata?.reverseGeocode(query: "52.2620898, 104.3203629",
                            delimeter: ",",
                            resultsCount: 1,
                            language:"ru",
                            searchRadius: 100){ r in
                                let v = try? r.get()
                                if let s = v?.suggestions, s.count > 0{
                                    print("\(s[0].value!): LAT#\(s[0].data!.geoLat!) @ LON#\(s[0].data!.geoLon!)")
                                }
}

文档

项目文档可在此处找到:文档链接

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

安装

IIDadata 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'IIDadata'

或者使用 Swift PM。将以下行添加到您的 Package.swift 文件中的依赖项部分

.package(url: "https://github.com/illabo/IIDadata.git", from: "0.2.0")

其他

预提交和提交后钩子,用于在发布分支上提交时自动生成文档并从 Podspec 版本标签创建标签

许可

IIDadata 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。