Gostaria de "marcar geotag" todas as minhas postagens e exibi-las em um único mapa do Google.
google-maps
geo-data
alekone
fonte
fonte
Respostas:
Para fazer isso sem nenhum plug-in, você precisa apenas da API do Google Maps .
Observe que, se você planeja ter 20 marcadores ou mais em uma única página, precisa geolocalizar as postagens usando coordenadas e não endereços.
Para salvar coordenadas de um endereço, você pode:
Como implementar a segunda opção não está estritamente relacionada à pergunta, e não levarei em consideração a minha resposta, mas veja este exemplo da API do Google Maps para ver como é simples recuperar coordenadas de um endereço.
Então eu vou assumir neste resposta que as mensagens têm um campo personalizado 'coords', onde as coordenadas são armazenados como uma seqüência de dois valores separados por vírgula, someting como:
'38.897683,-77.03649'
.Também suponho que exista um modelo de página salvo no arquivo 'page-google-map.php'.
Coloque o seguinte código em
functions.php
Como você pode ver, no modelo da página de mapa, enfileiro
mygmap.js
localizado na subpasta 'js' do temaAlém disso, em loop nas postagens, preenchei uma matriz
$map_data
e, usandowp_localize_script
essa informação, passei para os js na página.Agora,
mygmap.js
conterá:O javascript não está relacionado ao WP, e eu coloquei aqui apenas para mostrar o uso de
map_data
var. Eu não sou desenvolvedor js e o código é mais ou menos inteiramente retirado daquiIsso é tudo. Basta criar o modelo da página e inserir uma div com o id 'map', algo como:
É claro que a div pode ser estilizada com css e observe que também as janelas de informações dos marcadores também podem ser estilizadas: no css, use
h3.marker-title
para estilizar o título da janela de informações ediv.marker-desc
estilizar o conteúdo.Observe que o centro do mapa é calculado automaticamente e se você deseja alterar o zoom padrão, é necessário colocar um campo personalizado 'map_zoom' na página atribuída ao modelo de página do mapa.
Espero que ajude.
fonte
(37.983917, 23.729359899999963)
onde posso editar o código para que ele possa usar as cordas com braquetes ao seu redor. Minha tentativa falhou. Obrigado por esta resposta, embora seja incrível!$meta_coords = get_post_meta( get_the_ID(), 'coords', true );
para$meta_coords = trim(get_post_meta( get_the_ID(), 'coords', true ), '()');
e, claro, substituircoords
o campo real dos usos do plugin para coordenadas da loja.