Compétence de Motifs de Recherche Mapbox
Guidance d'expert pour les assistants IA sur l'utilisation efficace des outils de recherche Mapbox. Couvre la sélection des outils, l'optimisation des paramètres et les bonnes pratiques pour le géocodage, la recherche de POI et la découverte de lieux.
Outils de Recherche Disponibles
1. search_and_geocode_tool
Idéal pour : Lieux spécifiques, adresses, marques, emplacements nommés
À utiliser quand la requête contient :
- Noms spécifiques : « Starbucks on 5th Avenue », « Empire State Building »
- Noms de marques : « McDonald's », « Whole Foods »
- Adresses : « 123 Main Street, Seattle », « 1 Times Square »
- Chaînes de magasins : « Target »
- Villes/lieux : « San Francisco », « Portland »
À ne pas utiliser pour : Catégories génériques (« coffee shops », « museums »)
2. category_search_tool
Idéal pour : Types de lieux génériques, catégories, requêtes au pluriel
À utiliser quand la requête contient :
- Types génériques : « coffee shops », « restaurants », « gas stations »
- Formes plurielles : « museums », « hotels », « parks »
- Phrases du type is-a : « any coffee shop », « all restaurants », « nearby pharmacies »
- Termes sectoriels : « electric vehicle chargers », « ATMs »
À ne pas utiliser pour : Noms spécifiques ou marques
3. reverse_geocode_tool
Idéal pour : Convertir des coordonnées en adresses, villes, localités, codes postaux
À utiliser quand :
- Vous avez des coordonnées GPS, vous avez besoin d'une adresse lisible par l'humain
- Vous devez identifier ce qui se trouve à un endroit spécifique
- Convertir la localisation de l'utilisateur en adresse
Matrice de Décision de Sélection des Outils
| Requête Utilisateur | Outil | Raison |
|---|---|---|
| « Find Starbucks on Main Street » | search_and_geocode_tool | Marque spécifique |
| « Find coffee shops nearby » | category_search_tool | Catégorie générique, pluriel |
| « What's at 37.7749, -122.4194? » | reverse_geocode_tool | Coordonnées vers adresse |
| « Empire State Building » | search_and_geocode_tool | POI nommé spécifique |
| « hotels in downtown Seattle » | category_search_tool | Type générique + lieu |
| « Target store locations » | search_and_geocode_tool | Marque (même au pluriel) |
| « any restaurant near me » | category_search_tool | Générique + phrase « any » |
| « 123 Main St, Boston, MA » | search_and_geocode_tool | Adresse spécifique |
| « electric vehicle chargers » | category_search_tool | Catégorie sectorielle |
| « McDonald's » | search_and_geocode_tool | Marque |
Guidance des Paramètres
Proximity vs Bbox vs Country
Trois façons de contraindre spatialement les résultats de recherche :
1. proximity (FORTEMENT RECOMMANDÉ)
Ce qu'elle fait : Privilégie les résultats près d'un lieu, mais n'exclut pas les correspondances lointaines
À utiliser quand :
- L'utilisateur dit « near me », « nearby », « close to »
- Vous avez un point de référence mais voulez une certaine flexibilité
- Vous voulez que les résultats soient triés par pertinence par rapport à un point
Exemple :
{
"q": "pizza",
"proximity": {
"longitude": -122.4194,
"latitude": 37.7749
}
}
Pourquoi ça marche : L'API retourne d'abord les pizzerias de SF, mais peut inclure des pizzerias célèbres de NYC si elles sont très pertinentes
Critique : Définissez toujours proximity quand vous avez une localisation de référence ! Sans cela, les résultats sont basés sur l'IP ou globaux.
2. bbox (Bounding Box)
Ce qu'elle fait : Contrainte dure - retourne UNIQUEMENT les résultats dans la boîte
À utiliser quand :
- L'utilisateur spécifie une zone : « in downtown », « within this neighborhood »
- Vous avez une zone de service définie
- Vous devez garantir que les résultats se trouvent dans les limites
Exemple :
{
"q": "hotel",
"bbox": [-122.51, 37.7, -122.35, 37.83] // [minLon, minLat, maxLon, maxLat]
}
Pourquoi ça marche : Garantit que tous les hôtels sont dans la zone downtown de SF
Attention : Trop petit = pas de résultats ; trop grand = résultats non pertinents
3. country
Ce qu'elle fait : Limite les résultats à des pays spécifiques
À utiliser quand :
- L'utilisateur spécifie un pays : « restaurants in France »
- Vous construisez des fonctionnalités spécifiques à un pays
- Vous devez respecter les frontières régionales
- Ou il est sinon clair qu'ils veulent des résultats dans un pays spécifique
Exemple :
{
"q": "Paris",
"country": ["FR"] // Codes ISO 3166 alpha-2
}
Pourquoi ça marche : Trouve Paris, France (pas Paris, Texas)
Peut combiner : proximity + country + bbox ou toute combinaison des trois
Matrice de Décision : Filtres Spatiaux
| Scénario | À utiliser | Pourquoi |
|---|---|---|
| « Find coffee near me » | proximity | Privilégier la localisation de l'utilisateur |
| « Coffee shops in downtown Seattle » | proximity + bbox | Centrer sur le centre-ville, limiter à la zone |
| « Hotels in France » | country | Frontière de pays dure |
| « Best pizza in San Francisco » | proximity + country ["US"] | Privilégier SF, limiter aux États-Unis |
| « Gas stations along this route » | bbox autour de l'itinéraire | Contrainte dure au corridor d'itinéraire |
| « Restaurants within 5 miles » | proximity (puis filtrer par distance) | Privilégier à proximité, filtrer les résultats |
Paramètre limit
category_search_tool uniquement (1-25, par défaut 10)
| Cas d'Usage | Limit | Raison |
|---|---|---|
| Suggestions rapides | 5 | Résultats rapides et ciblés |
| Liste standard | 10 | Par défaut, bon équilibre |
| Recherche complète | 25 | Maximum autorisé |
| Visualisation cartographique | 25 | Afficher toutes les options à proximité |
| Dropdown/autocomplete | 5 | Ne pas surcharger l'interface |
Conseil de performance : Des limites plus basses = réponses plus rapides
Paramètre types (search_and_geocode_tool)
Filtrer par type de feature :
| Type | Ce qu'il Inclut | À utiliser Quand |
|---|---|---|
poi |
Points d'intérêt (commerces, monuments) | Chercher des POI, pas des adresses |
address |
Adresses de rue | Besoin d'une adresse spécifique |
place |
Villes, quartiers, régions | Chercher une zone/région |
street |
Noms de rue sans numéros | Besoin de la rue, pas d'adresse spécifique |
postcode |
Codes postaux | Recherche par code postal |
district |
Districts, quartiers | Recherche basée sur une zone |
locality |
Villes, villages | Recherche de commune |
country |
Noms de pays | Recherche au niveau pays |
Combinaisons d'exemples :
// Uniquement POI et adresses, pas de villes
{"q": "Paris", "types": ["poi", "address"]}
// Retourne Paris Hotel, Paris Street, pas Paris, France
// Uniquement les places (villes)
{"q": "Paris", "types": ["place"]}
// Retourne Paris, France; Paris, Texas; etc.
Comportement par défaut : Tous les types inclus (généralement ce que vous voulez)
Paramètre auto_complete (search_and_geocode_tool)
Ce qu'il fait : Active la correspondance partielle/floue
| Paramètre | Comportement | À utiliser Quand |
|---|---|---|
true |
Correspond à des mots partiels, fautes | Utilisateur qui tape en temps réel |
false (par défaut) |
Correspondance exacte | Requête finale, pas autocomplete |
Exemple :
// L'utilisateur tape "starb"
{ "q": "starb", "auto_complete": true }
// Retourne : Starbucks, Starboard Tavern, etc.
À utiliser pour :
- Interfaces search-as-you-type
- Gérer les fautes de frappe (« mcdonalds » -> McDonald's)
- Requêtes incomplètes
À ne pas utiliser pour :
- Requêtes finales/soumises (moins précis)
- Quand vous avez besoin de correspondances exactes
Anti-motifs à Éviter
À ne pas faire : Utiliser category_search pour les marques
// MAUVAIS
category_search_tool({ category: 'starbucks' });
// « starbucks » n'est pas une catégorie, retourne une erreur
// BON
search_and_geocode_tool({ q: 'Starbucks' });
À ne pas faire : Utiliser search_and_geocode pour les catégories génériques
// MAUVAIS
search_and_geocode_tool({ q: 'coffee shops' });
// Moins précis, peut retourner des résultats non pertinents
// BON
category_search_tool({ category: 'coffee_shop' });
À ne pas faire : Oublier proximity pour les recherches locales
// MAUVAIS - Les résultats peuvent être n'importe où dans le monde
category_search_tool({ category: 'restaurant' });
// BON - Privilégié vers la localisation de l'utilisateur
category_search_tool({
category: 'restaurant',
proximity: { longitude: -122.4194, latitude: 37.7749 }
});
À ne pas faire : Utiliser bbox quand vous voulez dire proximity
// MAUVAIS - La frontière dure peut exclure de bons résultats à proximité
search_and_geocode_tool({
q: 'pizza',
bbox: [-122.42, 37.77, -122.41, 37.78] // Boîte minuscule
});
// BON - Privilégier un point, mais flexible
search_and_geocode_tool({
q: 'pizza',
proximity: { longitude: -122.4194, latitude: 37.7749 }
});
À ne pas faire : Demander l'ETA inutilement
// MAUVAIS - Coûte le quota API pour les calculs de routage
search_and_geocode_tool({
q: 'museums',
eta_type: 'navigation',
navigation_profile: 'driving'
});
// L'utilisateur n'a pas demandé le temps de trajet !
// BON - Ajouter l'ETA uniquement si nécessaire
search_and_geocode_tool({ q: 'museums' });
// Si l'utilisateur demande « how long to get there? », alors ajouter l'ETA
À ne pas faire : Définir limit trop haut pour l'affichage UI
// MAUVAIS - Accablant pour un simple dropdown
category_search_tool({
category: 'restaurant',
limit: 25
});
// Retourne 25 restaurants pour un dropdown de 5 éléments
// BON - Adapter aux besoins de l'interface
category_search_tool({
category: 'restaurant',
limit: 5
});
Référence Rapide
Organigramme de Sélection d'Outil
La requête utilisateur contient...
-> Nom/marque spécifique (Starbucks, Empire State Building)
-> search_and_geocode_tool
-> Catégorie générique/pluriel (coffee shops, museums, any restaurant)
-> category_search_tool
-> Coordonnées -> Adresse
-> reverse_geocode_tool
-> Adresse -> Coordonnées
-> search_and_geocode_tool avec types: ["address"]
Checklist des Paramètres Essentiels
Pour les recherches locales, TOUJOURS définir :
proximity(ou bbox si frontière stricte nécessaire)
Pour les recherches de catégories, considérer :
limit(adapter aux besoins de l'interface)format(json_string si tracer sur une carte)
Pour la désambiguïsation, utiliser :
country(quand le contexte géographique compte)types(quand le type de feature compte)
Pour le classement par temps de trajet :
eta_type,navigation_profile,origin(coûte le quota API)
Erreurs Courantes
- Oublier proximity -> Les résultats sont globaux/basés sur l'IP
- Utiliser le mauvais outil -> category_search pour « Starbucks » (utiliser search_and_geocode)
- Catégorie invalide -> Vérifier d'abord la category_list
- Bbox trop petit -> Pas de résultats ; utiliser proximity à la place
- Demander l'ETA inutilement -> Ajoute le coût API
- Limit trop haut pour l'interface -> Accablant pour l'utilisateur
- Ne pas filtrer types -> Obtenir des villes quand vous voulez des POI
Fichiers de Référence
Charger ceux-ci pour une guidance plus approfondie sur des sujets spécifiques :
references/advanced-params.md— poi_category, ETA, format et paramètres de languereferences/workflows.md— Motifs courants : Near Me, Branded, Geocoding, Category+Area, Reverse, Route-Based, Multilingualreferences/optimization-combining.md— Optimisation de performance, combinaison d'outils, gestion des résultats vides, ressource de liste de catégories