Boucle GEOPOINTS

Rôle

La boucle GEOPOINTS sert à parcourir les points géographiques définis sur un élément SPIP. Elle est directement reliée à la table <i>gmap_points</i> qui contient les points définis dans l'interface de géolocalisation.

Cette boucle peut-être utilisée pour ajouter les marqueurs correspondants aux points sur les cartes de l'interface publique. Elle s'utilise donc dans deux cas :

  • Le cas le plus courant est la redéfinition d'un fichier de requête permettant de récupérer les points selon des critères spécifiques. Le fichier par défaut gmap-query-default.html peut servir d'exemple pour définir de tels fichiers. Ce sont des squelettes SPIP qui produisent des fichiers au format KML.
  • Un cas moins courant serait l'ajout manuel de marqueurs grâce à la balise #GEOMARKER. L'utilisation de la boucle est la même.

Utilisation

La syntaxe est la suivante :

<B_points>
<BOUCLE_points(GEOPOINTS){identificateur d'objet}[{visible}][{meilleur}]>
...
</BOUCLE_points>
</B_points>

Le critère {identificateur d'objet} est obligatoire, il permet d'identifier l'objet duquel on cherche les points. Il peut s'agir de critère faisant référence au contexte des boucles, comme {id_article}, ou une indication explicite comme {id_rubrique=2}, ou encore un couple {objet=document}{id_objet=123}.

Le critère {visible} indique que seuls les points dont le type est marqué visible seront renvoyés.

Le critère {meilleur} indique que l'on souhaite ne récupérer qu'un seul point. La requête recherche alors le point défini sur l'objet ayant le meilleur niveau de priorité, c'est-à-dire le plus faible champ priorite de la table gmap_types.

Balises

Dans le contexte de la boucle GEOPOINTS, on peut utiliser les balises suivantes :

  • #ID_POINT : identifiant du point (a priori inutile).
  • #LATITUDE : latitude du point.
  • #LONGITUDE : longitude du point.
  • #ZOOM : facteur de zoom associé au point.
  • #OBJET : type de l'objet par lequel on a accéder au point (sachant qu'un point pourrait à l'avenir être lié à plusieurs objets).
  • #ID_OBJET : identifiant de l'objet par lequel on a accéder au point (idem).
  • #TYPE_POINT : nom du type de point.
  • #DESCRIPTIF : descriptif du type de point.
  • #VISIBLE : oui/non selon que le type de point est visible ou non.
  • #PRIORITE : niveau de priorité du type de point.

 

Dans le contexte de la création d'un fichier KML, on peut également utiliser les balises spéciales (parce que non liée à la base de données) suivantes :

  • #GEOMARKERICONS : ajout des information sur l'icone du marqueur, dans un format spécifique aux KML de GMap.
  • #GEOPOPUP : ajout du contenu de l'info-bulle associée à un objet.

Exemple

<BOUCLE_art_documents(DOCUMENTS){id_article}>
<BOUCLE_art_documents_points(GEOPOINTS){id_document}{visible}{meilleur}>
<Placemark>
  [<styleUrl>(#URL_PAGE{gmap-styles-default}|ancre_url{GMapDocument})</styleUrl>]
  <ExtendedData>[
    (#GEOMARKERICONS{format=kml})]
    <markerParams[ type="(#TYPE_POINT)"][ zoom="(#ZOOM)"][ objectName="(#OBJET)"][ objectId="(#ID_OBJET)"][ visible="(#VISIBLE)][ priority="(#PRIORITE)"] />
  </ExtendedData>
  [<Style>
    <BalloonStyle>
      <bgColor>ffffffff</bgColor>
      <text>(#GEOPOPUP{objet_parent=article,id_objet_parent=#_articles:ID_ARTICLE})</text>
    </BalloonStyle>
  </Style>]
  <Point>
    <coordinates>#LONGITUDE,#LATITUDE,0</coordinates>
  </Point>
</Placemark>
</BOUCLE_art_documents_points>
</BOUCLE_art_documents>