AppleMapsKit

🗺️ 将 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"])