# Como corrigir o Maps Listing do JetEngine que não exibe marcadores no WordPress

O JetEngine não exibe marcadores no Maps Listing quando falta uma API key válida do provedor de mapas, quando o campo de endereço não tem coordenadas geocodificadas, ou quando a fonte de endereço do widget aponta para o campo errado. Sem latitude e longitude armazenadas, o mapa carrega mas nenhum pino é desenhado.

## O que é Maps Listing do JetEngine sem marcadores?

O JetEngine Maps Listing é um widget que plota marcadores em um mapa a partir de um Listing, usando como fonte um campo do tipo endereço ou um par de coordenadas de cada item (post, termo ou registro de Custom Content Type). Cada marcador depende de uma latitude e longitude: o JetEngine só consegue posicionar o pino quando esse par de coordenadas existe para o item. O mapa em si é desenhado pelo provedor configurado em JetEngine, normalmente o Google Maps, que exige uma API key válida para inicializar.

Quando os marcadores não aparecem, a integração quebrou em algum ponto dessa cadeia: o provedor de mapas não inicializou por falta de API key ou de API habilitada, o campo de endereço dos itens está vazio ou nunca foi geocodificado, ou a configuração do widget aponta para a fonte de endereço errada. O sintoma é quase sempre o mesmo, um mapa que carrega centralizado mas sem nenhum pino, e a causa raiz está nos dados de coordenada ou na chave de API, não no widget em si.

## Como identificar

- O mapa carrega normalmente, centralizado, mas nenhum marcador aparece sobre ele.
- O console do navegador exibe um erro do Google Maps como 'Google Maps JavaScript API error: ApiNotActivatedMapError' ou 'RefererNotAllowedMapError'.
- O mapa aparece totalmente cinza com a marca d'agua 'For development purposes only', sinalizando API key sem faturamento ativo.
- Apenas alguns itens do Listing mostram marcador e o restante some, indicando itens sem coordenadas preenchidas.
- No editor o widget Maps Listing renderiza o mapa, mas na pré-visualização e no frontend os pinos não são plotados.

**Antes de começar:** Antes de alterar a API key, trocar o provedor de mapas ou editar o Listing em produção, faça um backup do site ou teste em um ambiente de staging, para reverter caso o mapa ou o Listing pare de renderizar.

## Como prevenir

- Restrinja a API key do Google Maps por referenciador HTTP e por API (apenas Maps JavaScript API e Geocoding API), evitando uso indevido sem quebrar a renderização do site.
- Padronize um campo de endereço dedicado nos tipos de post mapeados e valide a geocodificação ao cadastrar cada item, em vez de confiar em texto livre.
- Mantenha uma conta de faturamento ativa no Google Cloud com orçamento e alertas, pois a falta de faturamento derruba os mapas com a marca d'agua de desenvolvimento.
- Documente qual meta field alimenta cada Maps Listing para que ninguém troque a fonte de endereço por engano ao editar o Listing.

Erros relacionados

- [Como corrigir o erro de query no Listing Grid do JetEngine](https://full.services/wp-fixer/corrigir-erro-query-jetengine-listing-grid/)
- [Como corrigir o Dynamic Visibility do JetEngine que não funciona com cache](https://full.services/wp-fixer/corrigir-dynamic-visibility-jetengine-cache/)
- [Como corrigir o JetSmartFilters AJAX que não retorna resultados](https://full.services/wp-fixer/corrigir-jetsmartfilters-ajax-sem-resultados/)

## Causa

- A API key do Google Maps não está configurada nas Maps Settings do JetEngine, ou a chave existe mas a Maps JavaScript API não foi habilitada no projeto do Google Cloud, impedindo o mapa de inicializar e plotar pinos.
- O campo usado como fonte de endereço é do tipo texto comum e nunca foi geocodificado: sem o par latitude e longitude salvo no item, o JetEngine não tem coordenadas para posicionar o marcador.
- A geocodificação falha porque a Geocoding API não está habilitada no mesmo projeto do Google Cloud da chave, então o endereço em texto nunca é convertido em coordenadas ao salvar o item.
- No widget Maps Listing a opção de fonte do endereço aponta para o meta field errado (ou para um campo vazio), de modo que o JetEngine lê coordenadas inexistentes e não desenha nenhum pino.
- A restrição de domínio (HTTP referrers) da API key no Google Cloud não inclui o domínio do site, fazendo o Google bloquear a requisição com RefererNotAllowedMapError e abortar a renderização dos marcadores.

## Como resolver

1. Confira a API key do provedor de mapas no JetEngine: Abra as configurações de mapas do JetEngine e confirme que há uma API key válida do provedor escolhido. Sem chave, o mapa até carrega em modo limitado, mas a renderização de marcadores falha.

```
Painel WP -> JetEngine -> JetEngine (Settings) -> aba Maps Settings
Cole a API key do Google Maps no campo API Key e salve
Confirme o provedor selecionado (ex.: Google Maps)
```

2. Habilite as APIs corretas no Google Cloud: No console do Google Cloud, no mesmo projeto da chave, ative a Maps JavaScript API (desenha o mapa) e a Geocoding API (converte endereço em coordenadas). Garanta também que o faturamento esteja ativo, senão o mapa aparece cinza com aviso de desenvolvimento.

```
Google Cloud Console -> APIs e Serviços -> Biblioteca
Ative 'Maps JavaScript API'
Ative 'Geocoding API'
Faturamento -> confirme uma conta de faturamento vinculada ao projeto
```

3. Confirme a fonte de endereço no widget Maps Listing: Edite o Listing do mapa e verifique a opção que define de onde vêm as coordenadas. Ela precisa apontar para o campo de endereço ou de mapa real do item, não para um campo vazio ou de texto solto.

```
Abra o Listing Item do mapa no editor (Elementor ou Blocos)
Selecione o widget Maps Listing -> defina a fonte do endereço (Source) para o meta field correto
Salve e atualize a pré-visualização
```

4. Garanta coordenadas geocodificadas em cada item: Abra alguns posts ou registros que deveriam aparecer no mapa e confirme que o campo de endereço está preenchido e foi geocodificado, gerando latitude e longitude. Reabrir e salvar o item força o JetEngine a geocodificar o endereço novamente.

```
Painel WP -> abra um item do tipo de post usado no mapa
Preencha o campo de endereço com um endereço completo e válido
Atualize (Update) o item para disparar a geocodificação e gravar lat/lng
```

5. Ajuste as restrições de domínio da API key: Se o console do navegador mostrar RefererNotAllowedMapError, a chave está restrita a domínios que não incluem o site. Adicione o domínio do WordPress à lista de referrers permitidos da chave.

```
Google Cloud Console -> APIs e Serviços -> Credenciais -> abra a API key
Em Restrições de aplicativo, escolha Referenciadores HTTP
Adicione 'https://seusite.com/*' e 'https://*.seusite.com/*' e salve
```


## Código

```javascript
// Cole no console do navegador na página com o mapa do JetEngine.
// Lista cada item do Maps Listing e mostra se tem coordenadas válidas.
document.querySelectorAll('.jet-map-listing__item, .jet-map-marker').forEach(function (el, i) {
  var lat = el.getAttribute('data-lat') || el.dataset.lat;
  var lng = el.getAttribute('data-lng') || el.dataset.lng;
  var ok = lat && lng && !isNaN(parseFloat(lat)) && !isNaN(parseFloat(lng));
  console.log('Item ' + (i + 1) + ' -> lat:', lat, '| lng:', lng, ok ? '| OK' : '| SEM COORDENADAS');
});
```

## Perguntas frequentes

### Por que meu mapa do JetEngine carrega mas não mostra marcadores

Na maioria dos casos o mapa inicializa pela API key, mas os itens não têm coordenadas. O JetEngine só plota um pino quando há latitude e longitude para o item, então um campo de endereço vazio ou não geocodificado deixa o mapa sem marcadores.

### O JetEngine Maps Listing precisa de API key do Google Maps

Sim, quando o provedor escolhido é o Google Maps. A chave vai nas Maps Settings do JetEngine e o projeto no Google Cloud precisa da Maps JavaScript API ativa para desenhar o mapa e da Geocoding API para converter endereços em coordenadas.

### Por que o mapa aparece cinza com o aviso 'For development purposes only'

Esse aviso indica que a API key não tem uma conta de faturamento ativa vinculada ao projeto no Google Cloud. Ative o faturamento e o mapa volta a renderizar normalmente, junto com os marcadores.

### Como faço o endereço do item virar marcador no mapa

O endereço em texto precisa ser geocodificado, ou seja, convertido em latitude e longitude. Com a Geocoding API habilitada, salvar o item dispara a geocodificação e o JetEngine grava as coordenadas usadas para posicionar o pino.

### O que significa o erro RefererNotAllowedMapError no console

Significa que a API key está restrita a domínios que não incluem o do seu site. Em Credenciais no Google Cloud, adicione o domínio do WordPress à lista de referenciadores HTTP permitidos da chave para liberar a requisição.

### Só alguns itens aparecem no mapa, por que

Os itens que aparecem têm coordenadas válidas e os que somem não. Reabra cada post sem marcador, confirme o endereço preenchido e salve o item para forçar a geocodificação e gravar a latitude e longitude faltante.

### Posso usar outro provedor de mapas no JetEngine além do Google

Sim, as Maps Settings do JetEngine permitem escolher o provedor. Independentemente da escolha, a mesma lógica vale: cada item precisa de coordenadas geocodificadas e o provedor precisa estar corretamente autenticado para que os marcadores apareçam.

### O marcador some no frontend mas aparece no editor, é normal

Não. Em geral é restrição da API key ou cache. Verifique se a chave permite o domínio do frontend, limpe o cache do site e do navegador e confirme que a fonte de endereço do widget aponta para o campo com coordenadas.

**Fonte:** [Crocoblock — JetEngine Knowledge Base (Maps Listing)](https://crocoblock.com/knowledge-base/)
