🗺️ 将 Apple Maps Server API 集成到 Swift 服务器应用程序中
使用此基于 Web 的服务,通过将地点、兴趣点、地理编码、方向、搜索的可能自动完成以及预计到达时间 (ETA) 计算等地理相关搜索从应用程序内部转移到服务器,从而简化应用程序的 API。
使用 SPM 字符串可以轻松地将依赖项包含在 Package.swift
文件中
.package(url: "https://github.com/fpseverino/apple-maps-kit.git", from: "1.0.0")
并将其添加到目标的依赖项中
.product(name: "AppleMapsKit", package: "apple-maps-kit")
返回您指定的地址的纬度和经度。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let places = try await client.geocode(address: "1 Apple Park, Cupertino, CA")
返回您提供的坐标处存在的地址数组。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let places = try await client.reverseGeocode(latitude: 37.33182, longitude: -122.03118)
按名称或特定搜索条件查找地点。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let searchResponse = try await client.search(for: "eiffel tower")
查找可用于自动完成搜索的结果。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let results = try await client.searchAutoComplete(for: "eiffel")
按特定条件查找方向。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let directions = try await client.directions(
origin: "37.7857,-122.4011",
destination: "San Francisco City Hall, CA"
)
返回起始位置和结束位置之间的预计到达时间 (ETA) 和距离。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let coordinateEtas = try await client.eta(
from: (latitude: 37.331423, longitude: -122.030503),
to: [
(latitude: 37.32556561130194, longitude: -121.94635203581443),
(latitude: 37.44176585512703, longitude: -122.17259315798667)
]
)
let addressEtas = try await client.etaBetweenAddresses(
from: "San Francisco City Hall, CA",
to: ["Golden Gate Park, San Francisco"],
)
获取给定的一组地点 ID 的 Place
对象集,或者获取给定一个或多个地点 ID 的备用地点 ID 列表。
import AppleMapsKit
import AsyncHTTPClient
let client = AppleMapsClient(
httpClient: HTTPClient(...),
teamID: "DEF123GHIJ",
keyID: "ABC123DEFG",
key: """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
)
let place = try await client.place(id: "I7C250D2CDCB364A")
let placesResponse = try await client.places(ids: ["ICFA2FAE5487B94AF", "IA6FD1E86A544F69D"])
let alternateIDsResponse = try await client.alternatePlaceIDs(ids: ["I7C250D2CDCB364A", "ICFA2FAE5487B94AF"])