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â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.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |