Aller au contenu

Aperçu

unmap est une plateforme de localisation axée sur la protection de la vie privée. Une clé couvre quatre groupes de capacités :

  • Cartes : fonds de carte vectoriels mondiaux, quinze styles MapLibre en clair et en sombre, relief mondial et courbes de niveau canadiennes.
  • Recherche : géocodage canadien, adresses structurées, saisie semi-automatique, géocodage inverse, lieux à proximité et géocodage par lots. Les noms incluent les langues disponibles dans les sources.
  • Itinéraires : itinéraires canadiens, isochrones, matrices, appariement GPS, optimisation de l'ordre des arrêts et optimisation des parcs de véhicules. Cette dernière prend aussi en charge les trajets en ligne droite mondiaux ou les matrices fournies. Les horaires et le routage de transport en commun ont des couvertures distinctes. Les événements routiers couvrent la C.-B. et l'Alberta; Truck Intelligence est un module en préversion.
  • Données de localisation : altitude du MNE et fuseaux horaires mondiaux, couches canadiennes, identification point-dans-polygone, requêtes par emprise et vos superpositions. Les jeux de données sectoriels exigent le module correspondant.

Ces groupes facilitent la découverte; ils n'ajoutent pas de clés ou de forfaits distincts. Consultez la couverture et les limites et la facturation du service choisi.

L'objectif de conception est un délai jusqu'au premier Hello World de moins de 60 secondes, avec deux instructions de code après l'installation.

Le vocabulaire des cartes, en une minute

Si vous n'avez jamais intégré d'API cartographique, ces termes couvrent l'essentiel de ce que le reste de ces pages suppose connu.

  • Tuile. La carte est découpée en carrés pour que le navigateur ne télécharge que ceux qui sont à l'écran. /tiles/11/375/685 désigne un carré : zoom 11, colonne 375, ligne 685. Vous en demanderez rarement un vous-même, car MapLibre détermine ceux dont il a besoin.
  • Zoom. Un nombre entier de 0, le monde entier dans une seule tuile, à 14, le niveau le plus détaillé servi par unmap. Chaque palier double le détail. Une ville tient autour du zoom 11.
  • Tuile vectorielle. Nos tuiles contiennent des données (une route, un parc, une étiquette) plutôt qu'une image de route. C'est le navigateur qui les dessine, ce qui explique pourquoi la carte reste nette sur un écran haute densité et pourquoi une même tuile peut être dessinée dans quinze styles différents.
  • Fond de carte. La carte sous tout ce que vous ajoutez par-dessus. Vos marqueurs, vos itinéraires et vos données vous appartiennent; le fond de carte est l'arrière-plan sur lequel ils reposent.
  • Style. Un document JSON qui indique à MapLibre comment dessiner les tuiles : quelles couleurs, quelles polices, quoi afficher à quel zoom. Ce n'est pas du CSS, et vous n'avez pas à en écrire un. Vous demandez un style par son nom.
  • Géocodage. Transformer du texte en coordonnée, par exemple « Calgary Tower » en une longitude et une latitude. Le géocodage inverse fait le chemin contraire, d'une coordonnée vers l'adresse ou le lieu le plus proche.
  • Isochrone. La zone que vous pouvez atteindre depuis un point dans un temps donné, retournée sous forme de polygone. Tout ce qui est à moins de 15 minutes en voiture, par exemple.

Le SDK et GeoJSON utilisent des tableaux de coordonnées dans l'ordre [longitude, latitude]. La longitude est la valeur est-ouest, négative au Canada; la latitude est la valeur nord-sud. Optimize utilise plutôt des champs nommés, { latitude, longitude }. Vérifiez le format de chaque point de terminaison avant d'envoyer des coordonnées.

Configurer le SDK

Le paquet @unmap/sdk réunit toute la plateforme derrière une seule clé (um_live_... en production, um_test_... en développement). Créez l'instance une seule fois :

import { Unmap } from "@unmap/sdk";
 
const unmap = new Unmap({ key: "um_live_..." });
 
await unmap.geocoder.search("Calgary Tower");
await unmap.router.route([-114.07, 51.05], [-113.99, 51.05]);

Passez un container et vous obtenez aussi une carte affichée :

const map = new Unmap({
  key: "um_live_...",
  container: "map",
  center: [-114.07, 51.05],
});
 
map.map; // la carte MapLibre GL sous-jacente
map.geocoder; // search / autocomplete / nearby / reverse
map.router; // route / isochrone / matrix / match / optimize
map.places; // recherche POI / proximité / identifiant
map.elevation; // altitude du MNE
map.timezone; // fuseau IANA / décalage UTC
map.transit; // sociétés / arrêts / lignes / départs prévus
map.roads; // incidents / fermetures / conditions routières
map.layers; // métadonnées du catalogue
map.identify; // identification point-dans-polygone
map.data; // requêtes par emprise
map.byod; // importation et gestion de vos superpositions
map.coverage; // couverture des capacités et des données
map.feedback; // signaler des données erronées

La surface de l'API

new Unmap(options) accepte :

OptionTypeRemarques
keystringObligatoire. Votre clé um_live_ ou um_test_.
gatewaystringOptionnel. Remplace l'URL de base de l'API. Par défaut https://api.unmap.dev.
containerstring | HTMLElementOptionnel. Si fourni, une carte y est montée.
stylestringUn style (base, muted, outdoor, blueprint, blush, orchid, canopy, lagoon, tropic, sunset, bold, pastel, atlas, swiss, winter) ou une URL de style complète. Par défaut base.
modestringOptionnel. light ou dark, light par défaut. S'applique à un nom de style nu. Une chaîne <style>-<mode> est transmise telle quelle et mode ne la modifie pas.
langstringOptionnel. Langue des étiquettes, p. ex. fr. Omis, la carte suit l'Accept-Language du navigateur.
themestringOptionnel. Un code de thème ut1. généré par /create. A priorité sur style.
center[number, number]Optionnel. [lng, lat].
zoomnumberNiveau de zoom initial optionnel.
projection'globe' | 'mercator'Optionnel. Par défaut 'globe', une sphère qui s'aplatit quand on zoome. 'mercator' est la carte plane.
controlsboolean | { position }Optionnel. Boutons de zoom et boussole, activés par défaut. false pour une carte nue ; { position: 'bottom-left' } pour les déplacer.

style choisit la façon dont la carte est dessinée; center et zoom choisissent où elle commence. mode, lang et theme choisissent comment elle est dessinée. style: 'base' avec mode: 'dark' et center: [-73.5673, 45.5017] est une requête valide. La liste complète des styles, et ce que mode, lang et theme font sur la passerelle, se trouve dans l'API de cartes.

Le démarrage rapide utilise ces membres :

  • .map est la carte MapLibre GL (seulement quand un container a été fourni). Surface compatible Mapbox-GL-JS.
  • .geocoder offre search(q, opts?), autocomplete(q, opts?), nearby(category, opts), reverse(lng, lat, opts?). Voir l'API de géocodage.
  • .router offre route(from, to, opts?), isochrone(center, { minutes, mode? }). Voir l'API d'itinéraires.

Les méthodes d'API renvoient des promesses avec des résultats typés fondés sur les réponses de la passerelle. Certaines normalisent aussi les données ou analysent les en-têtes; optimizeTours() renvoie { response, warnings, billableShipments, timeoutClamped, clampedTimeoutSeconds }. Une réponse non 2xx lève une erreur typée qui porte le status HTTP, comme GeocoderError, RouterError ou UnmapOptimizeError.

Ce que documente unmap, et ce que documente MapLibre

@unmap/maps est une enveloppe mince. createMap() construit l'URL du style, y insère votre clé et retourne une carte MapLibre GL JS, sans envelopper la carte elle-même. Ces pages documentent donc la passerelle, les quinze styles et ce que le SDK ajoute : une carte et les clients de service ci-dessus. Tout ce que vous faites à une carte par la suite relève de l'API de MapLibre, documentée en amont sur maplibre.org, en anglais seulement.

Cette répartition vaut la peine d'être connue avant de venir chercher ici une page qui n'existe pas :

  • Événements : map.on('click', …), 'load', 'moveend', 'error'. MapLibre.
  • Sources et couches : addSource(), addLayer(), setPaintProperty(). MapLibre, ainsi que la spécification de style.
  • Caméra : flyTo(), fitBounds(), easeTo(). MapLibre.
  • Marqueurs, infobulles et contrôles : Marker, Popup, ScaleControl. MapLibre. (NavigationControl est déjà sur la carte ; controls: false le retire.)
  • Styles, clés, quotas et les points de terminaison correspondants : ici.

Aucun second import n'est nécessaire. @unmap/maps réexporte l'exemplaire même de MapLibre que votre application a installé (il prend maplibre-gl comme dépendance de pair au lieu d'embarquer le sien) : import { maplibregl } from "@unmap/maps" vous donne les mêmes constructeurs Marker et Popup, sans dupliquer MapLibre dans votre paquet.

Villes de démonstration

Trois villes de lancement, exportées sous DEMO_CITIES. Ce sont des cadrages de départ, pas des cartes différentes, et chaque style fonctionne sur chacune d'elles.

  • calgary pour Calgary, en Alberta
  • montreal pour Montréal, au Québec
  • iqaluit pour Iqaluit, au Nunavut

Réglez le cadrage avec center et zoom. style prend un nom de style ou une URL de style. Une ville est un cadrage de départ, pas un style. Les tuiles couvrent le monde en Web Mercator : une fois la carte affichée, vous pouvez vous déplacer partout.

La même carte peut démarrer à Tokyo avec des étiquettes japonaises. Cet exemple affiche uniquement la carte ; les exemples de recherche et d'itinéraires canadiens ci-dessus gardent leur couverture actuelle.

import { createMap } from "@unmap/maps";
 
createMap({ key, container: "#map", style: "base", center: [139.6917, 35.6895], zoom: 11, lang: "ja" });

Paquets

@unmap/sdk est l'installation en une ligne. Des paquets autonomes existent pour les cartes, le géocodage, les itinéraires et l'altitude. Les autres clients, dont les fuseaux horaires et le transport en commun, sont dans le SDK. Aucun n'est requis : les API sont accessibles directement en HTTPS, et Appeler l'API directement montre les mêmes appels depuis curl, fetch, Python et un MapLibre standard. Si votre page n'a aucune étape de compilation, le SDK se charge aussi depuis une balise de script ; voyez le Démarrage rapide.

PaquetCe que c'est
@unmap/sdkUnmap : carte et tous les clients de service sous une clé. Réexporte les paquets clients principaux.
@unmap/mapscreateMap() et unmapStyle() : MapLibre GL branché sur la passerelle. Prend maplibre-gl comme dépendance de pair : installez-le à côté.
@unmap/geocodingGeocoder et Places : clients typés pour /geocode/* et /places/*, sans dépendance à une carte.
@unmap/routingRouter : itinéraires, isochrones, matrices, appariement GPS et optimisation des arrêts. Sans dépendance à une carte.
@unmap/elevationElevation : client autonome pour l'altitude du MNE, sans dépendance à une carte.
@unmap/corestyleUrl(), tileUrl() et les calculs de tuiles. Zéro dépendance.
@unmap/themesLe modèle ThemeDoc, le codec ut1. et le validateur derrière /create. Données seulement.
@unmap/reactLes hooks useUnmap(), useGeocoder(), useDirections() par-dessus le SDK, plus UnmapProvider. Compatibles SSR.
@unmap/nextUn composant client <Map> qu'une page en composant serveur peut afficher directement. Réexporte @unmap/react.
@unmap/vueLes composables useUnmap(), useGeocoder(), useDirections() par-dessus le SDK. Compatibles SSR.
@unmap/nuxtUn module Nuxt qui définit unmap: { key } dans la configuration d'exécution et importe automatiquement les composables Vue.
@unmap/cliunmap create génère un projet, unmap add y copie des composants du registre, unmap init vérifie une clé et écrit une configuration de départ.

Les utilisateurs de React commencent par @unmap/react (les hooks) ou, avec l'App Router de Next.js, par @unmap/next (un <Map> prêt à poser). Pour une interface plus riche et modifiable, comme une boîte de recherche, un panneau d'itinéraire et des marqueurs, le registre de composants installe des composants de style shadcn construits sur @unmap/maps, dont vous possédez le code.

Pourquoi unmap

  • Untracked (sans pistage). Les clés sont mesurées, pas les personnes.
  • Unlocked (sans verrou). Mise en cache permissive, aucune horloge d'expiration sur ce que vous mettez en cache.
  • Unbundled (dégroupé). Une seule clé pour les cartes, le géocodage et les itinéraires.
  • Infrastructure nord-américaine. Le réseau périphérique nord-américain de Cloudflare (ENAM/WNAM). Nous ne pouvons pas garantir une résidence des données limitée au Canada sur les forfaits libre-service. Contactez-nous si vous avez besoin d'une garantie contractuelle.

Attribution et sources de données

Contient des renseignements rendus disponibles sous la Licence du gouvernement ouvert - Canada par Ressources naturelles Canada (Base de données toponymiques du Canada). Données cartographiques et d'adresses (c) contributeurs d'OpenStreetMap. Le graphe d'itinéraires est construit à partir des mêmes données OpenStreetMap, sous la licence Open Database License (ODbL). Le relief et l'altitude mondiaux utilisent Mapterhorn; les courbes de niveau canadiennes utilisent un instantané conservé du MNEMR de RNCan. Consultez les attributions pour les sources et les licences.

Pour les avis sur les données de compte et les caches, consultez la politique de confidentialité et les conditions.

Une note sur les noms de lieux autochtones. Les données de géocodage d'unmap comprennent des noms de lieux officiels en langues autochtones, tirés de la Base de données toponymiques du Canada, un jeu de données ouvert et maintenu par le gouvernement. Il s'agit uniquement de noms officialisés. Les noms de lieux détenus par les communautés et les noms traditionnels font l'objet d'une démarche distincte, fondée sur le consentement, que nous n'avons pas entreprise : tout travail futur dans cette direction suivrait les principes PCAP (propriété, contrôle, accès et possession), en partenariat avec les communautés concernées, plutôt qu'une importation de données. Rien ici ne doit être interprété comme un appui des communautés.

Prêt à afficher quelque chose? Rendez-vous au Guide de démarrage ou aux Exemples. Avant la mise en production, Authentification couvre les formes de clé, les origines autorisées et la séparation navigateur/serveur. Vous venez de Google Maps, Mapbox, HERE ou Esri? Les guides de migration traduisent les appels que vous avez. Vous vous demandez pourquoi ce produit existe? Nous en faisons la démonstration, preuves à l'appui, dans Why another maps API? (en anglais).