将 Amplify 库与 Amazon Location Service 配合使用 - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amplify 库与 Amazon Location Service 配合使用

以下教程将引导您完成使用 Amazon L AWS Amplify ocation 的过程。Amplify 使用 MapLibre GL JS 在 JavaScript基于你的应用程序中渲染地图。

Amplify 是一组开源客户端库,为不同类别的服务提供接口,包括由 Amazon Location Service 提供支持的 Amplify Geo。 了解有关 AWS Amplify Geo JavaScript 库的更多信息。

注意

本教程假设您已经按照使用地图——向应用程序添加地图中的步骤进行操作。

构建应用程序:支架

本教程创建了一个用于在HTML页面 JavaScript 上构建地图的 Web 应用程序。

首先创建一个包含地图容器的HTML页面 (index.html):

  • 输入带有 idmapdiv 元素,将地图的尺寸应用于地图视图。尺寸继承自视区。

<html> <head> <style> body { margin: 0; } #map { height: 100vh; } /* 100% of viewport height */ </style> </head> <body> <!-- map container --> <div id="map" /> </body> </html>

构建应用程序:添加依赖项

将以下依赖项添加到您的应用程序:

  • AWS Amplify 地图和地理库。

  • AWS Amplify 核心库。

  • AWS Amplify 身份验证库。

  • AWS Amplify 样式表。

<!-- CSS dependencies --> <link href="https://cdn.amplify.aws/packages/maplibre-gl/1.15.2/maplibre-gl.css" rel="stylesheet" integrity="sha384-DrPVD9GufrxGb7kWwRv0CywpXTmfvbKOZ5i5pN7urmIThew0zXKTME+gutUgtpeD" crossorigin="anonymous" referrerpolicy="no-referrer"></link> <!-- JavaScript dependencies --> <script src="https://cdn.amplify.aws/packages/maplibre-gl/1.15.2/maplibre-gl.js" integrity="sha384-rwYfkmAOpciZS2bDuwZ/Xa/Gog6jXem8D/whm3wnsZSVFemDDlprcUXHnDDUcrNU" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/core/4.3.0/aws-amplify-core.min.js" integrity="sha384-7Oh+5w0l7XGyYvSqbKi2Q7SA5K640V5nyW2/LEbevDQEV1HMJqJLA1A00z2hu8fJ" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/auth/4.3.8/aws-amplify-auth.min.js" integrity="sha384-jfkXCEfYyVmDXYKlgWNwv54xRaZgk14m7sjeb2jLVBtUXCD2p+WU8YZ2mPZ9Xbdw" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/geo/1.1.0/aws-amplify-geo.min.js" integrity="sha384-TFMTyWuCbiptXTzvOgzJbV8TPUupG1rA1AVrznAhCSpXTIdGw82bGd8RTk5rr3nP" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/maplibre-gl-js-amplify/1.1.0/maplibre-gl-js-amplify.umd.min.js" integrity="sha384-7/RxWonKW1nM9zCKiwU9x6bkQTjldosg0D1vZYm0Zj+K/vUSnA3sOMhlRRWAtHPi" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script> // application-specific code </script>

这将创建一个包含地图容器的空白页面。

构建应用程序:配置

要使用以下方法配置应用程序 JavaScript:

  1. 输入您在使用地图——步骤 2,设置身份验证中创建的未经身份验证的身份池的标识符。

    // Cognito Identity Pool ID const identityPoolId = "region:identityPoolID"; // for example: us-east-1:123example-1234-5678 // extract the Region from the Identity Pool ID const region = identityPoolId.split(":")[0];
  2. 配置 AWS Amplify 为使用您创建的资源,包括身份池和地图资源(此处显示的默认名称为explore.map)。

    // Configure Amplify const { Amplify } = aws_amplify_core; const { createMap } = AmplifyMapLibre; Amplify.configure({ Auth: { identityPoolId, region, }, geo: { AmazonLocationService: { maps: { items: { "explore.map": { style: "Default style" }, }, default: "explore.map", }, region, }, } });

构建应用程序:地图初始化

要在页面加载后显示地图,必须初始化地图。您可以调整初始地图位置、添加其他控件和叠加数据。

async function initializeMap() { const map = await createMap( { container: "map", center: [-123.1187, 49.2819], zoom: 10, hash: true, } ); map.addControl(new maplibregl.NavigationControl(), "top-left"); } initializeMap();
注意

您必须在应用程序或文档中为使用的每个数据提供程序提供文字标记或文本属性。属性字符串包含在样式描述符响应中的 sources.esri.attributionsources.here.attributionsources.grabmaptiles.attribution 键下。Amplify 将自动提供属性。在数据提供程序处使用 Amazon Location 资源时,请务必阅读服务条款和条件

运行应用程序

您可以通过在本地 Web 服务器中使用此示例应用程序或在浏览器中将其打开来运行它。

要使用本地 Web 服务器,您可以使用作为 Node.js 一部分安装的 npx,也可以使用您选择的任何其他 Web 服务器。要使用 npx,请在与 npx serve 相同的目录中键入 index.html。这在 localhost:5000 上为应用程序提供服务。

注意

如果您为未经身份验证的 Amazon Cognito 角色创建的策略包含referer条件,则可能会禁止您使用进行测试。localhost: URLs在这种情况下。您可以使用策略中提供的 Web 服务器URL进行测试。

完成教程后,最终的应用程序类似于以下示例。

<html> <head> <!-- CSS dependencies --> <link href="https://cdn.amplify.aws/packages/maplibre-gl/1.15.2/maplibre-gl.css" rel="stylesheet" integrity="sha384-DrPVD9GufrxGb7kWwRv0CywpXTmfvbKOZ5i5pN7urmIThew0zXKTME+gutUgtpeD" crossorigin="anonymous" referrerpolicy="no-referrer"></link> <!-- JavaScript dependencies --> <script src="https://cdn.amplify.aws/packages/maplibre-gl/1.15.2/maplibre-gl.js" integrity="sha384-rwYfkmAOpciZS2bDuwZ/Xa/Gog6jXem8D/whm3wnsZSVFemDDlprcUXHnDDUcrNU" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/core/4.3.0/aws-amplify-core.min.js" integrity="sha384-7Oh+5w0l7XGyYvSqbKi2Q7SA5K640V5nyW2/LEbevDQEV1HMJqJLA1A00z2hu8fJ" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/auth/4.3.8/aws-amplify-auth.min.js" integrity="sha384-jfkXCEfYyVmDXYKlgWNwv54xRaZgk14m7sjeb2jLVBtUXCD2p+WU8YZ2mPZ9Xbdw" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/geo/1.1.0/aws-amplify-geo.min.js" integrity="sha384-TFMTyWuCbiptXTzvOgzJbV8TPUupG1rA1AVrznAhCSpXTIdGw82bGd8RTk5rr3nP" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.amplify.aws/packages/maplibre-gl-js-amplify/1.1.0/maplibre-gl-js-amplify.umd.min.js" integrity="sha384-7/RxWonKW1nM9zCKiwU9x6bkQTjldosg0D1vZYm0Zj+K/vUSnA3sOMhlRRWAtHPi" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <style> body { margin: 0; } #map { height: 100vh; } </style> </head> <body> <div id="map" /> <script type="module"> // Cognito Identity Pool ID const identityPoolId = "region:identityPoolId"; // for example: us-east-1:123example-1234-5678 // extract the Region from the Identity Pool ID const region = identityPoolId.split(":")[0]; // Configure Amplify const { Amplify } = aws_amplify_core; const { createMap } = AmplifyMapLibre; Amplify.configure({ Auth: { identityPoolId, region, }, geo: { AmazonLocationService: { maps: { items: { "explore.map": { style: "Default style" }, }, default: "explore.map", }, region, }, } }); async function initializeMap() { const map = await createMap( { container: "map", center: [-123.1187, 49.2819], zoom: 10, hash: true, } ); map.addControl(new maplibregl.NavigationControl(), "top-left"); } initializeMap(); </script> </body> </html>

运行此应用程序会使用您选择的地图样式显示全屏地图。Amazon Location Service 控制台中任何地图资源页面的嵌入地图选项卡上也描述了此示例。

完成本教程后,请转至 AWS Amplify 文档中的显示地图主题以了解更多信息,包括如何在地图上显示标记。