你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Maps适用于 JavaScript 的搜索客户端库 - 版本 1.0.0-beta.2
/TypeScript
Azure Maps 搜索服务是一组 REST API,旨在帮助开发人员按名称、类别和其他地理信息搜索地址、位置和业务列表。 除了支持传统的地理编码以外,该服务还可以根据纬度和经度对地址和十字街执行反向地理编码。 在诸如路线和天气服务之类的其他 Azure Maps 服务中,可将搜索返回的纬度和经度值用作参数。
此包包含一个同构 SDK (在 Node.js 和浏览器中运行,) Azure Maps Search 客户端。
入门
目前支持的环境
- LTS 版本的 Node.js
- 最新版本的 Safari、Chrome、Edge 和 Firefox。
先决条件
- 一个 Azure 订阅。
- Azure Maps 帐户。 可以通过 Azure 门户、Azure PowerShell或 Azure CLI 创建资源。
如果使用 Azure CLI,请替换<resource-group-name>
所选的 和 <map-account-name>
,并通过 参数根据需要<sku-name>
选择适当的定价层。 有关详细信息,请参阅此页。
az maps account create --resource-group <resource-group-name> --name <map-account-name> --sku <sku-name>
安装 @azure/maps-search
包
使用 npm
安装 Azure Maps 搜索客户端库:
npm install @azure/maps-search
创建 MapsSearchClient
并对其进行身份验证
若要创建客户端对象以访问Azure Maps搜索 API,需要 一个 credential
对象。 Azure Maps搜索客户端可以使用 Azure Active Directory 凭据或 Azure 密钥凭据进行身份验证。
使用 Azure Active Directory 凭据
可以使用 Azure 标识库通过 Azure Active Directory 进行身份验证。 若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 提供的其他凭据提供程序,请安装包 @azure/identity
:
npm install @azure/identity
还需要注册新的 AAD 应用程序,并通过向服务主体分配合适的角色来授予对Azure Maps的访问权限。 请参阅 管理身份验证 页。
将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量:AZURE_CLIENT_ID
、、AZURE_TENANT_ID
AZURE_CLIENT_SECRET
。
还需要通过在客户端选项中指定 来指定clientId
要使用的Azure Maps资源。
可以在Azure Maps资源的“身份验证”部分中找到Azure Maps资源客户端 ID。 请参阅 文档,了解如何 查找它。
const { MapsSearchClient } = require("@azure/maps-search");
const { DefaultAzureCredential } = require("@azure/identity");
const credential = new DefaultAzureCredential();
const client = new MapsSearchClient(credential, "<maps-account-client-id>");
使用订阅密钥凭据
可以使用Azure Maps订阅密钥进行身份验证。
const { MapsSearchClient, AzureKeyCredential } = require("@azure/maps-search");
const credential = new AzureKeyCredential("<subscription-key>");
const client = new MapsSearchClient(credential);
关键概念
MapsSearchClient
MapsSearchClient
是开发人员使用 Azure Maps 搜索客户端库的主要接口。 浏览此客户端对象上的方法,了解可以访问Azure Maps 搜索服务的不同功能。
示例
以下部分提供了几个代码片段,涵盖了一些最常见的Azure Maps搜索任务,包括:
请求地址的纬度和经度坐标
可以使用经过身份验证的客户端将地址转换为纬度和经度坐标。 此过程也称为“地理编码”。 除了返回坐标外,响应还会返回详细的地址属性,例如街道、邮政编码、市政当局和国家/地区信息。
const searchResult = await client.searchAddress("400 Broad, Seattle");
for (const {
position: { lat, lon },
} of searchResult.results) {
console.log(`Latitude: ${lat}, Longitude: ${lon}`);
}
搜索地址或兴趣点
可以使用模糊搜索来搜索地址或兴趣点 (POI) 。 以下示例演示如何在特定国家/地区范围内搜索 pizza
(France
,在此示例中) 。
const fuzzySearchResult = await client.fuzzySearch({ query: "pizza", countryCodeFilter: ["fr"] });
for (const result of fuzzySearchResult.results) {
console.log(result);
}
进行反向地址搜索,将坐标位置转换为街道地址
可以将坐标转换为人类可读的街道地址。 此过程也称为反向地理编码。 这通常用于使用 GPS 源并希望在特定坐标点发现地址的应用程序。
const coordinates: LatLon = [47.59118, -122.3327]; // [latitude, longitude]
const { addresses } = await client.reverseSearchAddress(coordinates);
for (const { address } of addresses) {
console.log(address);
}
将坐标位置转换为人类可理解的十字路口
使用搜索地址反向十字街 API 将坐标位置转换为人类可理解的十字街。 大多数情况下,从设备或资产接收 GPS 源并且要了解坐标所在位置的跟踪应用程序需要此 API。
const coordinates: LatLon = [47.59118, -122.3327];
const { addresses } = await client.reverseSearchCrossStreetAddress(coordinates);
for (const { address } of addresses) {
console.log(address);
}
疑难解答
日志记录
启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL
环境变量设置为 info
。 或者,可以在运行时通过调用 @azure/logger
中的 setLogLevel
来启用日志记录:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
有关如何启用日志的更详细说明,请查看 @azure/logger 包文档。
后续步骤
有关如何使用此库的详细示例,请查看 示例 目录。
贡献
若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。