Cartes statiques
Une carte en image, à partir d’une seule adresse : pour les confirmations de commande, les reçus, les e-mails et les messages, là où une carte interactive ne passe pas.
Sur cette page
Une seule adresse donne une image de la carte : mettez-la dans une balise <img>, un e-mail, un reçu PDF ou un message WhatsApp. N-Ways la dessine sur ses propres serveurs, à partir de la même carte que le SDK Maps.
En créer une
<img
width="600" height="300" alt="Carte de l’adresse de livraison"
src="https://nways.ng/maps/v1/staticmap?center=6.6018,3.3515&zoom=15&size=600x300&scale=2&markers=color:green|6.6018,3.3515&key=VOTRE_CLE_API" />| Paramètre | Description |
|---|---|
center, zoom | Le centre (lat,lng) et le zoom (de 0 à 20). Omettez les deux pour cadrer sur les marqueurs et les tracés. |
size | WIDTHxHEIGHT en pixels CSS, de 32 à 1 280 chacun. Par défaut 640x400. |
scale | 2 pour deux fois plus de pixels, pour les écrans de téléphone. Par défaut 1. |
theme | light (par défaut) ou dark. |
format | png (par défaut) ou jpg. |
markers | Les styles, puis les points, séparés par | : color:red|label:A|6.60,3.35|6.45,3.39. Styles : color (red, green, blue, orange, yellow, purple, black, white, gray, ou 0xRRGGBB), label (une lettre ou un chiffre), size (tiny, small, mid). Répétez markers= pour des styles différents ; jusqu’à 100 marqueurs. |
path | Une ligne : les styles, puis les points, ou une polyligne encodée : color:0x1e6fe8|weight:5|6.60,3.35|6.52,3.37|6.45,3.39, ou …|enc:<polyline>. fillcolor la remplit comme une surface. Jusqu’à 10 tracés. |
signature | Une signature, pour les adresses utilisées en dehors de votre site web. |
L’image porte la mention OpenStreetMap dans son coin : ne la coupez pas. Chaque image compte comme un appel de carte statique pour la facturation ; la même adresse redemandée peu après est servie depuis le cache.
Depuis JavaScript
import { staticMapUrl } from '@nways/maps'
img.src = staticMapUrl({
key: 'VOTRE_CLE_API',
size: [600, 300],
scale: 2,
markers: [
{ at: { lat: 6.5965, lng: 3.3421 }, color: 'orange', label: 'P' },
{ at: { lat: 6.6018, lng: 3.3515 }, color: 'green', label: 'D' },
],
path: { points: routes[0].geometry.coordinates, color: '#1e6fe8', weight: 5 },
})Les longs itinéraires font de longues adresses : gardez une URL sous environ 8 000 caractères en réduisant le nombre de points de la ligne, ou utilisez une polyligne encodée.
Adresses signées
Une clé restreinte à votre site web ne fonctionne que là où le navigateur indique que la requête vient de votre site. Les e-mails, les reçus et les messages ne le font pas : signez donc ces adresses sur votre serveur. La signature prouve que l’adresse vient de vous, et elle fonctionne alors partout, toujours dans le cadre des restrictions d’API, des limites et du crédit de la clé.
- Copiez le secret de signature des adresses depuis la fiche de la clé dans la console partenaire (les propriétaires et développeurs de votre organisation le voient). Gardez-le uniquement sur votre serveur. Le renouveler, ou régénérer la clé, invalide toutes les signatures précédentes.
- Construisez l’adresse avec la clé, puis signez son chemin et sa requête : HMAC-SHA256 avec le secret (décodé du base64url), sur le texte allant de
/maps/v1/staticmap?jusqu’à la fin. - Ajoutez
&signature=et le résultat en base64url, en dernier.
import { createHmac } from 'node:crypto'
function signed(url, secret) {
const u = new URL(url)
const sig = createHmac('sha256', Buffer.from(secret, 'base64url')).update(u.pathname + u.search).digest('base64url')
return `${url}&signature=${sig}`
}
const url = signed('https://nways.ng/maps/v1/staticmap?center=6.6018,3.3515&zoom=15&size=600x300&key=VOTRE_CLE_API', process.env.NWAYS_SIGNING_SECRET)import base64
import hashlib
import hmac
import os
from urllib.parse import urlsplit
def signed(url: str, secret: str) -> str:
u = urlsplit(url)
key = base64.urlsafe_b64decode(secret + "=" * (-len(secret) % 4))
digest = hmac.new(key, f"{u.path}?{u.query}".encode(), hashlib.sha256).digest()
return url + "&signature=" + base64.urlsafe_b64encode(digest).decode().rstrip("=")
url = signed("https://nways.ng/maps/v1/staticmap?center=6.6018,3.3515&zoom=15&size=600x300&key=VOTRE_CLE_API", os.environ["NWAYS_SIGNING_SECRET"])Une signature erronée est refusée (403). Ne signez jamais d’adresses dans une page web : le secret se retrouverait dans la page.