Zones de livraison et de chalandise : mettez vos utilisateurs en relation avec vos magasins
Sommaire
Recommander des points de vente classés par temps de trajet ou distance à vol d'oiseau ne suffit pas toujours. Pour trouver le supermarché chargé de livrer à une adresse donnée, chaque supermarché dispose d'une zone de livraison et, pour des raisons géographiques ou commerciales, ce n'est pas toujours le plus proche qui assure la livraison. Pour faciliter la recherche de points de vente dont la zone intersecte une localisation, nous présentons la Woosmap Zones API.
Vue d'ensemble
La Zones API vous permet d'associer une zone géographique à chacun de vos points de vente. Plusieurs zones peuvent être configurées pour un même magasin, afin de gérer différents types de zones — zone de chalandise, zone de livraison, etc.
Supposons que vous conceviez une application web permettant aux utilisateurs de trouver le supermarché qui livre à leur adresse. L'application doit :
- Déterminer la position actuelle de l'utilisateur,
- Identifier le supermarché dont la zone de livraison intersecte cette position.
La position de l'utilisateur peut être déterminée via notre Woosmap Geolocation API.
Proposer le bon magasin en fonction de la zone dans laquelle se trouve l'utilisateur nécessite ensuite un appel supplémentaire à l'API Woosmap.
Exemple
Pour illustrer les capacités de la Zones API, voici un jeu de données de 3 supermarchés avec leurs zones de livraison.
Vous pouvez prévisualiser ou télécharger les fichiers suivants contenant les collections de supermarchés et de zones de livraison.
- supermarkets.json
- delivery_areas.json
Structure des données
La Zones API expose le endpoint https://api.woosmap.com/zones/. Elle accepte la géométrie des zones au format** Well Known Text**. Le WKT définit comment représenter la géométrie d'un objet (cf. Well-known_text). Vos zones peuvent être des polygones complexes ou multi-parties.
Pas besoin d'être expert en la matière : contactez-nous en indiquant votre clé de projet et nous vous accompagnerons pas à pas.
Voici à quoi ressemble l'objet JSON de la Zone A dans le fichier delivery_areas.json :
{
zone_id: "ZoneA",
description: "Delivery Zone for Store A",
store_id: "store_a",
polygon: "POLYGON ((-122.4546384 37.774656,-122.4515485 37.7595934,-122.4354306 37.7602172,-122.4333707 37.7512596,-122.423071 37.7511239,-122.4242726 37.7687665,-122.4259893 37.7691736,-122.4289075 37.7732444,-122.4306241 37.7850483,-122.4472753 37.7830133,-122.445902 37.7759581,-122.4546384 37.774656))",
types: ["delivery"]
}Pour lier une zone à un point de vente, renseignez la propriété store_id correspondante. Le magasin doit déjà exister dans votre projet. Consultez la documentation en ligne pour découvrir toutes les propriétés disponibles.
Importer vos zones
Pour ce tutoriel, nous avons développé un script Python permettant d'importer les zones de livraison. Vous pouvez le prévisualiser ou le télécharger ici :
- upload_delivery_areas.py
import json
import requests
WOOSMAP_PRIVATE_API_KEY = '25fbd3c4-3484-4e85-a702-XXXX'
WOOSMAP_API_HOSTNAME = 'api.woosmap.com'
ZONES_FILE = 'delivery_areas.json'
def main():
with open(ZONES_FILE, 'rb') as f:
myZones = json.loads(f.read())
try:
r = requests.post('https://{hostname}/zones/'.format(
hostname=WOOSMAP_API_HOSTNAME),
params={'private_key': WOOSMAP_PRIVATE_API_KEY},
json=myZones)
print(r.text)
except Exception as error:
print("Unable to import file {0} : {1}".format(ZONES_FILE, error))
if __name__ == '__main__':
main()Une fois le script exécuté avec succès, vous devriez recevoir le message suivant.
{status: "ok", message: "Zones successfully added."}Determine User’s recommended Store based on Zone Intersecting
Suppose the user is located at LatLng: {37.7569652,-122.4401237}. To recommend the store based on zone intersecting, you will specify the zone=true argument in the search query (using HTTPie package here) as follows:
http https://api.woosmap.com/stores/search ? key=woos-xxxx-yyyy-zzzz&=true&=37.7569652&=-122.4401237
L'exemple jsFiddle suivant vous aidera à construire la requête de recherche.
À noter que les zones sont affichées à titre d'exemple : elles ne sont pas accessibles côté client, car elles sont protégées par CORS et disponibles uniquement via votre clé privée.
Liens utiles
- Documentation de la Zones API Woosmap.
- Notre implémentation sur jsFiddle
- Comprendre le Well Known Text
- Contactez-nous pour plus d'informations.

