GIS 4

Apresentação e novidades

A versão 4 de GIS abandona a coleção Mapstraction e começa a utilizar Leaflet. Esta coleção permite de se libertar das coleções de código fechado e ao mesmo tempo guardando as mesmas funções e propondo até mesmo novas funções.

Esta nova versão de GIS permite utilizar diferentes fundos de mapas sem precisar modificar os scripts externos, somente os scripts locais de Leaflet e plugins necessários são carregados em suas páginas. Atualmente, o plugin propõe mais de 25 camadas (layers) de fundo de carta diferentes. A maior parte destas camadas são baseadas em bases de dados livres ou Creative Commons. Entretanto, se você desejar ainda é possível utilizar as camadas de Google [1] e também a camada de satélite Bing.

[Ver a apresentação de GIS no State of the Map France>http://brunob.github.io/sotm2015/].

A atualização não acarreta uma grande ruptura de compatibilidade. Apenas alguns parâmetros foram suprimidos do modelo que gera a exibição dos mapas : control_zoom ; control_pan ; ajaxload.

Instalação e configuração

O plugin GIS precisa do plugin Saisies->article 3364].

Uma vez instalado, o plugin pode ser configurado a partir do menu « Configurar > GIS » ou pelo endereço ecrire/?exec=configurer_gis :

Esta página permite a definição das seguintes opções :

  • Coordenadas e zoom padrão a serem utilizadas nos mapas ;
  • Camada (layer) de fundo exibida por padrão e listas das camadas disponíveis ;
  • Exibir os campos de endereço nos formulários de edição dos pontos georreferenciados ;
  • Lista dos objetos associáveis aos pontos GIS.

Utilização no espaço privado

O plugin acrescenta um bloco nas páginas dos elementos de SPIP no espaço privado. Este bloco se expande no sobrevoo do mouse. Os links situados no cabeçalho do bloco expandido permitem de passar de um painel a outro :

  • Pontos associados exibe a lista dos pontos associados ao objeto atual com a possibilidade de retirar ou suprimir cada ponto ;
  • Procurar um ponto exibe um formulário para procurar um ponto existente e associá-lo ao objeto atual ;
  • Associar um novo ponto exibe o formulário de edição do ponto para criar um novo e ligá-lo ao objeto atual.

Uma página de gestão dos pontos do site é acessível a partir do menu Edição > Pontos geolocalizados.

A partir desta página, você pode acessar a ficha de edição de cada ponto para modificar as coordenadas, o campo de endereço ou o logotipo.

Utilização do modelo para inserir os mapas nas suas páginas

Para inserir um mapa em um esqueleto, utilize o modelo fornecido pelo plugin inserindo o seguinte código no lugar onde você deseja exibir o mapa :

[(#INCLURE{fond=modeles/carte_gis,zoom=8,limit=100,scale=oui})]

Você também pode utilizar o modelo fornecido pelo plugin para exibir um mapa a partir do conteúdo de um artigo. Para isso, é preciso acrescentar este código no texto do seu artigo :

<carte_gis1|zoom=8|limit=100|scale=oui>

Ler a documentação sobre os modelos em spip.net.

Parâmetros do modelo

parâmetro valores
id_carte_gis / id_map id único do mapa (a definir se vários mapas são exibidos em uma mesma página)
lat = 48.3 latitude do centro do mapa
lon = -4.7 longitude do centro do mapa
zoom = 5 zoom do mapa
minZoom = 10 zoom mínimo autorizado
maxZoom = 13 zoom máximo autorizado
default_layer = openmapsurfer nome da camada exibida por padrão [2]
affiche_layers = openmapsurfer/opentopomap nomes das camadas propostas (separadas por /)
sw_lat, sw_lon, ne_lat, ne_lon coordenadas dos pontos da bounding box a serem exibidos
width = 100% largura do mapa, 100% por padrão
height = 400px altura do mapa, 400px por padrão
style = non não estilizar o mapa
zoom_molette = non
zoom_wheel = non
desativar o zoom com a roda de rolagem do mouse, ativo por padrão
fullscreen = oui exibir um botão para passar o mapa para tela inteira
control_type = non não exibir o controle de mudança de camada
control_type_collapsed = non exibir o controle de mudança de camada expandida (sim por padrão)
no_control = oui
aucun_controle = oui
não exibir os controles do mapa
scale = oui exibir a escala do mapa
overview = oui exibir um mini mapa de situação
limit = 500 número máximo de marcadores a serem exibidos, 500 por padrão
objets = gis tipos de objetos a serem exibidos (arquivo json/gis_xx que gera a fonte dos dados)
autocenterandzoom = oui
centrer_auto = oui
centralizar e dar o zoom no mapa automaticamente para exibir todos os marcadores
tooltip = oui exibir um quadro de informação contendo o título do ponto quando sobrevoado pelo mouse
kml = 12 arquivo KML para ser sobreposto no mapa (id_document ou URL / elemento único, quadro ou lista de itens separados por uma vírgula)
gpx = 12 arquivo GPX a ser sobreposto no mapa (id_document ou URL / elemento único, tabela ou lista de itens separados por uma vírgula)
geojson = 12 arquivo Geo JSON a ser sobreposto no mapa (id_document ou URL / elemento único, tabela ou lista de itens separados por uma vírgula)
centrer_fichier = non permite não centralizar o mapa automaticamente nos arquivos kml/gpx sobrepostos
localize_visitor = oui
localiser_visiteur = oui
centralizar o mapa na posição do visitante (API geolocalização HTML5)
id_a_ouvrir id_gis do quadro de informação a ser exibido no carregamento (marcados unicamente)
point = non se estiver marcada como « não » esta opção não exibirá de forma alguma os pontos (útil para exibir apenas um kml por exemplo)
path_styles=#ARRAY{color,#fff} opções de estilo dos traçados oriundos da camada GeoJSON (ver http://leafletjs.com/reference.html#path-options)
cluster = oui ativa o clustering
clusterMaxZoom = 11 reúne os pontos até este zoom, mas não regroupe les points jusque à ce zoom, mas não além disso
maxClusterRadius = 80 raio máximo (em pixels) da cobertura de um cluster (80 por padrão)
clusterShowCoverageOnHover = oui Exibe no sobrevoo do cluster o contorno da zona coberta pelos pontos agrupados
clusterSpiderfyOnMaxZoom = oui Ativa o efeito de espalhamento para exibir os pontos que se sobrepõem
singleMarkerMode = oui Utiliza os ícones de cluster para todos os pontos (mesmo aqueles que não estão dentro de um cluster)

O parâmetro objetos

Este parâmetro permite que você especifique que tipo de objeto você deseja exibir no mapa. Ele pode adquirir os seguintes valores : gis (valor padrão, artigos, autores, documentos, eventos, palavras, sessões, sites.

Se o parâmetro « objetos » vale « artigos », você pode utilizar como parâmetro do modelo todos os critérios utilizáveis em um laço (boucle) ARTIGOS.

De um ponto de vista técnico, o parâmetro objetos permite definir qual esqueleto será utilizado para gerar os dados JSON que alimentarão o mapa. Quando o parâmetro « objetos » vale « autores », é o esqueleto plugins/gis/json/gis_auteurs.html que é utilizado.

Com a opção objets=point_libre, é possível de exibir um mapa centralizado em um ponto não registrado na base. É necessário então indicar a latitude e a longitude do ponto, bem como o zoom do mapa. É possível, opcionalmente, dar um título e uma descrição a este ponto, e definir uma imagem para o marcador.

Exemplo de chamada a partir do texto do artigo :

<carte_gis1|objets=point_libre|lat=48|lon=-5|zoom=10|titre=mon beau point|description=ma super description|icone=mon_image.png>

A partir da versão 4.8.10 é possível exibir os pontos relacionados aos artigos de um ramo do site (uma sessão ou sub-sessão) :

<carte_gis1|objets=articles_branche|id_rubrique=1>

Alguns exemplos de mapas

Exibir os artigos da sessão nº 2 e sobrepor o KML correspondente ao documento nº 2 :

[(#INCLURE{fond=modeles/carte_gis,
	objets=articles,
	id_rubrique=2,
	zoom=7,
	lat=48.214378965824345,
	lon=-4.543704986572266,
	kml=2})]

Exibir o ou os pontos relacionados ao artigo nº 2 e centrar o mapa automaticamente para exibir todos os pontos :

[(#INCLURE{fond=modeles/carte_gis,
	autocenterandzoom=oui,
	id_article=2})]

Exibir os pontos relacionados aos artigos do autor nº 1 :

[(#INCLURE{fond=modeles/carte_gis,
	objets=articles,
	id_auteur=1,
	zoom=5})]

Exibir os autores do site :

[(#INCLURE{fond=modeles/carte_gis,
	objets=auteurs,
	zoom=5})]

O modelo carte_gis_objet

Um segundo modelo existe para necessidades mais específicas : exibir todas as informações geográficas relacionadas a qualquer conteúdo de SPIP.

É necessário informar no mínimo os parâmetros « objeto » e « id_objeto », e o modelo exibirá apenas um mapa se existe ao menos um ponto OU ao menos um traçado (qualquer que seja o seu formato, json, gpx, kml).

Se existirem vários pontos, e vários traçados, o modelo exibirá tudo o que ele encontrar relacionado ao objeto solicitado.

Para mais parâmetros, é possível utilizar os mesmos parâmetros do modelo padrão « carte_gis », pois este modelo é chamado « carte_gis_objet ».

[(#REM) Exemple utilisant les paramètres propres au modèle + ceux du modèle classique ]
#INCLURE{fond=modeles/carte_gis_objet,
    id_carte_gis=evenement1234,
    objet=evenement,
    id_objet=1234,
    zoom_molette=non,
    fullscreen=oui,
    centrer_auto=oui}

Laços e balisas (Boucles et balises)

Aqui está a lista de balisas disponíveis em um laço GIS : : #ID_GIS, #TITRE, #DESCRIPTIF, #LAT, #LON, #ZOOM.

E se você ativou o geocoder ou que você preencheu os campos de endereço à mão : #ADRESSE, #PAYS, #CODE_PAYS, #REGION, #VILLE, #CODE_POSTAL.

Critério gis

O critério {gis} permite forçar uma junção na tabela GIS em todos os laços (boucles) de outros objetos. Desta forma, um laço ARTICLES que comporta o critério {gis}, exibirá unicamente os artigos anexados a um ponto (um artigo por ponto unicamente).

As informações deste ponto poderão ser exibidos através das seguintes balisas : #TITRE_GIS et #DESCRIPTIF_GIS, #ADRESSE_GIS, #PAYS_GIS, #CODE_PAYS_GIS, #REGION_GIS, #VILLE_GIS, #CODE_POSTAL_GIS.

Observação : as balisas possuem sufixos específicos para evitar qualquer problema de campo homônimo com outro plugin.

<BOUCLE_gis(ARTICLES){gis}{id_rubrique ?}>
#ID_GIS - #LAT - #LON - #ZOOM <br/>
Titre de l'article : #TITRE <br />
Descriptif de l'article : #DESCRIPTIF <br />
Titre du point : #TITRE_GIS <br />
Descriptif du point : #DESCRIPTIF_GIS <br />
</BOUCLE_gis>

Critério distância

O critério {gis distance<XX} permite filtrar os resultados de um laço GIS em função da distância (em quilômetros) em relação ao ponto presente no ambiente.

Por exemplo, para listar os pontos situados a menos de 50 km do ponto número 1 :

<BOUCLE_m(GIS){id_gis=1}>
<p>#TITRE / #LAT / #LON</p>
<BOUCLE_b(GIS){gis distance<50}>
<p>#ID_GIS / #TITRE / #DISTANCE km</p>
</BOUCLE_b>
</BOUCLE_m>

Critério distancefrom

O critério {distancefrom} pode ser utilizado quando o critério gis está presente em um objeto, ou quando já existe um laço GIS.

O critério seleciona apenas os objetos que possuem uma localização (um ponto relacionado) respeitando uma certa distância de um outro ponto ao qual é informado um parâmetro. Este ponto pode ser tanto uma tabela com « lat » et « lon », ou um id_gis.

Por exemplo, para encontrar todos os artigos em um raio da variável distância ao redor de um determinado ponto :

<BOUCLE_c(ARTICLES){gis}{distancefrom #ARRAY{lat,#ENV{lat},lon,#ENV{lon}}, <=, #ENV{distance}}>
<p>#ID_GIS / #TITRE / #DISTANCE km</p>
</BOUCLE_c>

Formulário de edição de ponto

O formulário #FORMULAIRE_EDITER_GIS permite criar ou modificar um ponto. Você pode utilizar o formulário nos seus esqueletos respeitando a seguinte sintaxe :

#FORMULAIRE_EDITER_GIS{id_gis, objet, id_objet, retour}

Definição dos parâmetros do formulário :

  • id_gis : identificador numérico do ponto ou vazio para criar um novo ponto
  • id_gis : o tipo de objeto ao qual o ponto é anexado
  • objet : id_objet do objeto ao qual o ponto é anexado
  • retour : url de retorno a qual o formulário redirecionará após a validação

Por exemplo, segue abaixo um trecho de código que permite modificar o ponto anexado a um artigo ou criar um novo se já não existe um ponto anexado ao artigo.

<BOUCLE_unpoint(GIS){id_article}{0,1}>
#SET{id_gis,#ID_GIS}
</BOUCLE_unpoint>
#SET{id_gis,nouveau}
<//B_unpoint>
#FORMULAIRE_EDITER_GIS{#GET{id_gis},'article',#ID_ARTICLE,#URL_ARTICLE}

Personalização

Icone padrão dos marcadores

É possível definir um icone padrão para os marcadores dos mapas. Para isto, é necessário de colocar a imagem do icone personalizado no seu dossiê de esqueletos :

squelettes/images/marker_defaut.png

Se você desejar, você pode associar uma imagem de sombra ao seu icone personalizado no seu dossiê de esqueletos : squelettes/images/marker_defaut_shadow.png

Personalizar o conteúdo dos balões de informações

O conteúdo dos balões de informação é gerado a partir dos atributos title e description de cada item dado como resposta pelos esqueletos JSON. Você pode carregar estes esqueletos do repertório gis/json para personalizar o conteúdo dos balões de informação.

Para simplificar estas personalizações, é mais simples utilizar um código #INCLURE como explicado no artigo Gis 4 Surcharger les infobulles.

Expandir a lista de parâmetros do modelo carte_gis

Se você utiliza os arquivos gis/json personalizados pode acontecer que você deseje transmitir ao modelo parâmetros com palavras de sua escolha. Como padrão, o plugin GIS autoriza a seguinte lista de palavras :

  • todas as chaves primárias declaradas e conhecidas
  • bem como as seguintes variáveis : id_objet, id_secteur, id_parent, media, recherche, mots, pays, code_pays, region, ville, code_postal, adresse

Esta lista pode ser enriquecida utilizando a pipeline
gis_modele_parametres_autorises.

Exemplo de utilização a partir de um arquivo mes_options.php :

$GLOBALS['spip_pipeline']['gis_modele_parametres_autorises'] .= "|nom_de_la_fonction";
 
function nom_de_la_fonction($flux) {
	$flux[] = 'machin';
	$flux[] = 'bidule';
	return $flux;
}

Dicas e utilizações avançadas

Você pode consultar e compartilhar suas dicas para GIS nesta página do caderno de notas.

Notes

[1Neste caso o plugin acrescentará as chamadas para os scripts de Google nas suas páginas com o objetivo de respeitar as condições de utilização restritas deste fornecedor.

[2Lista dos nomes das camadas disponóveis : openstreetmap_mapnik, openstreetmap_blackandwhite, openstreetmap_de, openstreetmap_hot, bing_aerial, openmapsurfer... Ver a lista completa online

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom