Uso de las herramientas y bibliotecas de MapLibre con Amazon Location
Una de las herramientas importantes para crear aplicaciones interactivas con Amazon Location es MapLibre. MapLibre
nota
Para utilizar cualquier aspecto de Amazon Location, instale el SDK de AWS para el lenguaje que desee utilizar.
-
Mapas
Para mostrar mapas en su aplicación, necesita un motor de renderizado de mapas que utilice los datos proporcionados por Amazon Location y los dibuje en la pantalla. Los motores de renderización de mapas también ofrecen la funcionalidad de desplazar y ampliar el mapa, o de agregar marcadores o chinchetas y otras anotaciones al mapa.
Amazon Location Service recomienda renderizar los mapas con el motor de renderizado MapLibre
. MapLibre GL JS es un motor para mostrar mapas en JavaScript, mientras que MapLibre Native proporciona mapas para iOS o Android. MapLibre también tiene un ecosistema de complementos para ampliar la funcionalidad principal. Para obtener más información, visite https://maplibre.org/maplibre-gl-js-docs/plugins/
. -
Búsqueda de lugares
Para facilitar la creación de una interfaz de usuario de búsqueda, puede utilizar el geocodificador MapLibre
para web (las aplicaciones de Android pueden utilizar el complemento Android Places ). Utilice Amazon Location para la biblioteca de geocodificador Maplibre
a fin de simplificar el proceso de uso de Amazon Location con amazon-location-for-maplibre-gl-geocoder
en aplicaciones de JavaScript. -
Rutas
Para mostrar las rutas en el mapa, utilice las indicaciones de MapLibre.
-
Geocercas y rastreadores
MapLibre no dispone de ninguna representación ni herramientas específicas para las geocercas y el rastreo, pero puede utilizar la función de renderizado y los complementos
para mostrar las geocercas y los dispositivos rastreados en el mapa. Los dispositivos que se están rastreando pueden usar MQTT o enviar actualizaciones manualmente a Amazon Location Service. Se puede responder a los eventos de Geofence utilizando AWS Lambda.
Hay muchas librerías de código abierto disponibles para proporcionar funciones adicionales a Amazon Location Service, por ejemplo, Turf
Muchas librerías utilizan los datos con formato de estándar abierto GeoJSON
Complemento de geocodificador MapLibre para Amazon Location
El complemento de geocodificador MapLibre para Amazon Location está diseñado para facilitar la incorporación de la funcionalidad Amazon Location en sus aplicaciones de JavaScript cuando trabaja con la representación de mapas y la geocodificación mediante la biblioteca maplibre-gl-geocoder
- Instalación
Puede instalar el complemento de geocodificador MapLibre en Amazon Location desde NPM para el uso con módulos mediante este comando:
npm install @aws/amazon-location-for-maplibre-gl-geocoder
Puede importarlo a un archivo HTML para usarlo directamente en el navegador con un script:
<script src="https://www.unpkg.com/@aws/amazon-location-for-maplibre-gl-geocoder@1">/script<
- Uso con módulo
Este código configura un mapa de JavaScript de Maplibre GL con capacidades de geocodificación de Amazon Location. Utiliza la autenticación mediante el grupo de identidades de Amazon Cognito para acceder a los recursos de Amazon Location. El mapa se representa con un estilo y coordenadas centrales específicos, y permite buscar lugares en el mapa.
// Import MapLibre GL JS import maplibregl from "maplibre-gl"; // Import from the AWS JavaScript SDK V3 import { LocationClient } from "@aws-sdk/client-location"; // Import the utility functions import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; // Import the AmazonLocationWithMaplibreGeocoder import { buildAmazonLocationMaplibreGeocoder, AmazonLocationMaplibreGeocoder } from "@aws/amazon-location-for-maplibre-gl-geocoder" const identityPoolId = "
Identity Pool ID
"; const mapName = "Map Name
"; const region = "Region
"; // region containing the Amazon Location resource const placeIndex = "PlaceIndexName
" // Name of your places resource in your AWS Account. // Create an authentication helper instance using credentials from Amazon Cognito const authHelper = await withIdentityPoolId("Identity Pool ID
"); const client = new LocationClient({ region: "Region
", // Region containing Amazon Location resources ...authHelper.getLocationClientConfig(), // Configures the client to use credentials obtained via Amazon Cognito }); // Render the map const map = new maplibregl.Map({ container: "map", center: [-123.115898, 49.295868], zoom: 10, style: `https://maps.geo.${region}.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor`, ...authHelper.getMapAuthenticationOptions(), }); // Gets an instance of the AmazonLocationMaplibreGeocoder Object. const amazonLocationMaplibreGeocoder = buildAmazonLocationMaplibreGeocoder(client, placeIndex, {enableAll: true}); // Now we can add the Geocoder to the map. map.addControl(amazonLocationMaplibreGeocoder.getPlacesGeocoder());- Uso con un navegador
-
En este ejemplo, se utiliza el cliente de Amazon Location para realizar una solicitud que se autentica mediante Amazon Cognito.
nota
Algunos de estos ejemplos utilizan el cliente de Amazon Location. El cliente de Amazon Location se basa en el AWSSDK para JavaScript V3
y permite realizar llamadas a Amazon Location mediante un script al que se hace referencia en un archivo HTML. Incluya lo siguiente en un archivo HTML:
< Import the Amazon Location With Maplibre Geocoder> <script src="https://www.unpkg.com/@aws/amazon-location-with-maplibre-geocoder@1"></script> <Import the Amazon Location Client> <script src="https://www.unpkg.com/@aws/amazon-location-client@1"></script> <!Import the utility library> <script src="https://www.unpkg.com/@aws/amazon-location-utilities-auth-helper@1"></script>
Incluya lo siguiente en un archivo JavaScript:
const identityPoolId = "
Identity Pool ID
"; const mapName = "Map Name
"; const region = "Region
"; // region containing Amazon Location resource // Create an authentication helper instance using credentials from Amazon Cognito const authHelper = await amazonLocationAuthHelper.withIdentityPoolId(identityPoolId); // Render the map const map = new maplibregl.Map({ container: "map", center: [-123.115898, 49.295868], zoom: 10, style: `https://maps.geo.${region}.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor`, ...authHelper.getMapAuthenticationOptions(), }); // Initialize the AmazonLocationMaplibreGeocoder object const amazonLocationMaplibreGeocoderObject = amazonLocationMaplibreGeocoder.buildAmazonLocationMaplibreGeocoder(client, placesName, {enableAll: true}); // Use the AmazonLocationWithMaplibreGeocoder object to add a geocoder to the map. map.addControl(amazonLocationMaplibreGeocoderObject.getPlacesGeocoder());
A continuación se enumeran las características y los comandos que se utilizan en el complemento geocodificador MapLibre para Amazon Location:
buildAmazonLocationMaplibreGeocoder
Esta clase crea una instancia del
AmazonLocationMaplibreGeocder
que es el punto de entrada para las demás llamadas:const amazonLocationMaplibreGeocoder = buildAmazonLocationMaplibreGeocoder(client, placesIndex, {enableAll: true});
getPlacesGeocoder
Devuelve un objeto iControl listo para usar que se puede agregar directamente a un mapa.
const geocoder = getPlacesGeocoder(); // Initialize map let map = await initializeMap(); // Add the geocoder to the map. map.addControl(geocoder);