Le
AdvancedPlaceSearchElement
est un élément HTML qui affiche les résultats d'une recherche de lieu dans une liste. Il existe deux façons de configurer l'élément gmp-advanced-place-search :
-
Pour rechercher des lieux d'un type spécifique dans une zone donnée, utilisez
la requête de recherche à proximité pour afficher les
résultats de recherche à l'aide des
PlaceNearbySearchRequestElement. -
Pour rechercher des lieux dans une zone donnée en fonction d'une requête textuelle, utilisez
la requête de recherche par texte pour afficher
les résultats de recherche à l'aide de
PlaceTextSearchRequestElement.
La recherche à proximité et la recherche par texte offrent les mêmes fonctionnalités avancées, y compris la personnalisation des boutons d'action, le filtrage des avis et des contenus multimédias, la configuration de l'attribution de lieu, ainsi que la gestion de la sélection et des erreurs de lieu.
Requête de recherche à proximité
Sélectionnez un type de lieu dans le menu pour afficher les résultats de recherche à proximité pour ce type de lieu.
La recherche à proximité est principalement configurée pour effectuer une recherche par type de lieu et par zone,
et les résultats peuvent être classés par distance ou par popularité à l'aide de la
rankPreference propriété. Pour en savoir plus, consultez la documentation de référence de la
PlaceNearbySearchRequestElement
classe.
Cet exemple affiche l'élément Advanced Place Search en réponse à une recherche à proximité avec un type de lieu sélectionné par l'utilisateur. Il affiche également un AdvancedPlaceDetailsCompactElement pour le lieu sélectionné.
Pour ajouter l'élément Advanced Place Search à la carte, ajoutez un
gmp-advanced-place-search élément avec un
gmp-place-nearby-search-request élément imbriqué à la page HTML.
<gmp-advanced-place-search selectable>
<!-- Nearby search requests require a location restriction to return results. Often set programmatically. -->
<gmp-place-nearby-search-request max-result-count="5"></gmp-place-nearby-search-request>
<template slot="place-list-item">
<gmp-place-all-content></gmp-place-all-content>
</template>
</gmp-advanced-place-search>
L'élément select permet à l'utilisateur de choisir un type de lieu dans
le menu. Par souci de simplicité, seuls trois types de lieux sont répertoriés : restaurant, café, et borne de recharge VE.
<div class="controls">
<label for="type-select">
Select a place type:
<select id="type-select" class="type-select">
<option value="restaurant">Restaurant</option>
<option value="cafe" selected>Cafe</option>
<option value="electric_vehicle_charging_station">
EV charging station
</option>
</select>
</label>
</div>
Lorsque l'utilisateur sélectionne un type de lieu dans le menu, l'
gmp-place-nearby-search-request élément est mis à jour, et l'
Advanced Place Search élément affiche les résultats.
Requête de recherche par texte
Saisissez un terme de recherche dans le champ de saisie, puis cliquez sur le bouton Rechercher pour obtenir une liste de lieux correspondant à ce terme.
La recherche par texte est principalement configurée pour effectuer une recherche à l'aide d'une requête textuelle et
d'un lieu. Les résultats peuvent être affinés par niveau de prix, par note et par disponibilité. Les résultats peuvent également être classés par distance ou par popularité
à l'aide de la rankPreference propriété. Pour en savoir plus, consultez la documentation de référence de la
PlaceTextSearchRequestElement
classe.
Cet exemple affiche l'élément Advanced Place Search en réponse à une saisie de texte de l'utilisateur. Il affiche également un AdvancedPlaceDetailsCompactElement pour le lieu sélectionné.
Pour ajouter l'élément Advanced Place Search à la carte, ajoutez un
gmp-advanced-place-search élément avec un
gmp-place-text-search-request élément imbriqué à la page HTML.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request max-result-count="5"></gmp-place-text-search-request>
<template slot="place-list-item">
<gmp-place-all-content></gmp-place-all-content>
</template>
</gmp-advanced-place-search>
L'élément input permet à l'utilisateur de saisir du texte de recherche.
<div class="controls">
<input
type="text"
id="query-input"
class="query-input"
placeholder="Search for a place"
value="cafe" />
<button id="search-button" class="search-button">
Search
</button>
</div>
Lorsque l'utilisateur clique sur le bouton Rechercher, la fonction de recherche est exécutée,
l'élément gmp-place-text-search-request est mis à jour, et l'élément Advanced Place Search affiche les résultats.
Fonctionnalités avancées
Personnaliser les boutons d'action
Ajoutez des boutons d'action en tant qu'enfants dans l'élément
<template slot="place-list-item"> du composant Advanced
Place Search. Utilisez <gmp-place-link> pour les connexions de navigation standard
et spécifiez explicitement l'attribut action. Vous pouvez éventuellement spécifier l'attribut slot. Les actions prédéfinies valides sont open-website,
open-directions, open-map, et call. Si
l'attribut slot est omis, la valeur par défaut est
action-main.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="place-list-item">
<gmp-place-name></gmp-place-name>
<gmp-place-link action="open-website" target="_blank"></gmp-place-link>
<gmp-place-link action="open-directions" slot="action-corner"></gmp-place-link>
</template>
</gmp-advanced-place-search>Filtrer les avis et les contenus multimédias
Cet exemple de code n'affiche que les contenus multimédias et les avis qui mentionnent "café".
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="place-list-item">
<gmp-place-name></gmp-place-name>
<gmp-place-media query="coffee"></gmp-place-media>
<gmp-place-reviews query="coffee" rank-preference="newest"></gmp-place-reviews>
</template>
</gmp-advanced-place-search>Configurer l'attribution de lieu
Pour configurer l'attribution visuelle, ajoutez un
<gmp-place-attribution> élément afin d'afficher les configurations d'attribution des données de l'API Maps, telles que la source d'une photo ou d'un avis.
Il doit être ajouté en tant qu'élément frère direct de <template>.
Les attributions placées dans l'élément <template> seront ignorées.
<gmp-advanced-place-search selectable>
<gmp-place-text-search-request text-query="pizza" max-result-count="5"></gmp-place-text-search-request>
<template slot="place-list-item">
<gmp-place-name></gmp-place-name>
</template>
<gmp-place-attribution light-scheme-color="black" dark-scheme-color="gray"></gmp-place-attribution>
</gmp-advanced-place-search>Gérer la sélection et les erreurs de lieu
Lorsque l'attribut selectable est présent, vous pouvez écouter l'événement
gmp-select pour récupérer le lieu sélectionné par l'utilisateur. Vous pouvez
également écouter l'événement gmp-error pour gérer correctement
les scénarios dans lesquels les données de lieu ne peuvent pas être récupérées.
const searchElement = document.querySelector('gmp-advanced-place-search'); searchElement.addEventListener('gmp-select', (e) => { console.log('User selected place: ', e.place); }); searchElement.addEventListener('gmp-error', (e) => { // e.detail contains the structured error payload console.error('Failed to load places: ', e.detail.error); });