|
|
# Projeto UberWX GoogleMaps - Versão Expandida
## Visão Geral
Este projeto implementa um sistema completo de gerenciamento de mapas Google Maps em WLanguage, utilizando programação orientada a objetos (OOP) com funcionalidades avançadas para marcadores categorizados e balões informativos interativos.
## Características Principais
### ? Sistema OOP Robusto - **GoogleMapsManager**: Classe principal para gerenciamento completo do mapa - **Marcador**: Classe para representação de marcadores com informações detalhadas - **InfoWindow**: Classe para balões informativos personalizáveis - **ConfiguracaoMarcador**: Configurações específicas por tipo de marcador - **TipoMarcador**: Enumeração com todos os tipos suportados
### ? Tipos de Marcadores Implementados 1. **Hospital** - Estabelecimentos de saúde com especialidades 2. **Bombeiros** - Postos do corpo de bombeiros 3. **Polícia** - Delegacias e postos policiais 4. **Mercado** - Supermercados e estabelecimentos comerciais 5. **Posto de Combustível** - Postos com informações de bandeira 6. **Correios** - Agências dos correios 7. **DHL** - Pontos de entrega DHL 8. **FedEx** - Pontos de entrega FedEx 9. **Prefeitura** - Órgãos públicos municipais 10. **Shopping** - Centros comerciais 11. **Estacionamento** - Áreas de estacionamento 12. **Shows** - Casas de shows e eventos 13. **Universidades** - Instituições de ensino superior 14. **Parques** - Áreas verdes e recreativas 15. **Locais Turísticos** - Pontos de interesse turístico 16. **Personalizado** - Marcadores definidos pelo usuário
### ? Balões Informativos Avançados - **Conteúdo Dinâmico**: Geração automática baseada no tipo de marcador - **Eventos Interativos**: Suporte a hover e clique - **Estilo Personalizado**: CSS customizável para cada balão - **Fechamento Automático**: Configurável com tempo personalizado - **Animações**: Efeitos visuais opcionais
### ? Funcionalidades Avançadas - **Busca por Proximidade**: Encontrar marcadores em um raio específico - **Filtros por Categoria**: Filtrar marcadores por tipo ou categoria - **Busca Textual**: Pesquisar marcadores por nome ou descrição - **Controle de Visibilidade**: Mostrar/ocultar marcadores por tipo - **Exportação JSON**: Exportar dados dos marcadores - **Estatísticas**: Relatórios sobre marcadores no mapa - **Ajuste Automático**: Zoom automático para mostrar todos os marcadores
## Estrutura do Projeto
``` Projeto_UberWX_Expandido/ +-- GoogleMapsManager.wclass # Classe principal +-- Marcador.wclass # Classe de marcadores +-- InfoWindow.wclass # Classe de balões informativos +-- TipoMarcador.wclass # Enumerações e configurações +-- ExemploUso.wdw # Exemplo prático de uso +-- Map1.html # HTML do mapa (atualizado) +-- StreetViewDiv.html # HTML do StreetView +-- README.md # Esta documentação ```
## Como Usar
### 1. Inicialização Básica
```wlanguage // Declarar variáveis gMapsManager é um GoogleMapsManager gHTMLControl é um HTMLControl sAPIKey é uma cadeia = "SUA_API_KEY_AQUI"
// Criar instância gMapsManager = new GoogleMapsManager(gHTMLControl, sAPIKey)
// Inicializar mapa gMapsManager.InicializarMapa(-23.5505, -46.6333, 12) ```
### 2. Adicionando Marcadores
```wlanguage // Hospital gMapsManager.CriarHospital(1, -23.5505, -46.6333, "Hospital das Clínicas", "Cardiologia", "(11) 2661-0000")
// Posto de combustível gMapsManager.CriarPostoCombustivel(2, -23.5600, -46.6400, "Posto Shell", "Shell", Verdadeiro)
// Shopping gMapsManager.CriarShopping(3, -23.5700, -46.6500, "Shopping Center", "10:00 - 22:00", 150)
// Marcador personalizado gMapsManager.CriarMarcadorPersonalizado(4, -23.5800, -46.6600, "Ponto Especial", "Descrição personalizada", "url_icone.png") ```
### 3. Funcionalidades de Busca
```wlanguage // Buscar por tipo arrHospitais é um array de Marcador = gMapsManager.BuscarMarcadoresPorTipo(TipoMarcador.HOSPITAL)
// Buscar por proximidade (raio de 2km) arrProximos é um array de Marcador = gMapsManager.BuscarMarcadoresProximos(-23.5505, -46.6333, 2.0)
// Buscar por texto arrResultados é um array de Marcador = gMapsManager.BuscarPorTexto("hospital")
// Filtrar por categoria arrSaude é um array de Marcador = gMapsManager.FiltrarPorCategoria("Saúde") ```
### 4. Controle de Visibilidade
```wlanguage // Ocultar todos os hospitais gMapsManager.AlternarVisibilidadePorTipo(TipoMarcador.HOSPITAL, Falso)
// Mostrar todos os postos de combustível gMapsManager.AlternarVisibilidadePorTipo(TipoMarcador.POSTO_COMBUSTIVEL, Verdadeiro) ```
### 5. Navegação e Controle
```wlanguage // Navegar para uma posição gMapsManager.NavegarPara(-23.5505, -46.6333)
// Definir zoom gMapsManager.DefinirZoom(15)
// Ajustar para mostrar todos os marcadores gMapsManager.AjustarParaTodosMarcadores()
// Mudar tipo de mapa gMapsManager.DefinirTipoMapa("satellite") ```
## Eventos Suportados
### Eventos do Mapa - **OnMapClick**: Clique no mapa - **OnZoomChanged**: Mudança de zoom - **OnCenterChanged**: Mudança de centro
### Eventos dos Marcadores - **OnMarkerClick**: Clique em marcador (abre balão informativo) - **OnMarkerHover**: Mouse sobre marcador (preview rápido)
## Configurações Avançadas
### Personalização de Balões Informativos
```wlanguage // Criar InfoWindow personalizada pInfoWindow é um ponteiro para InfoWindow = new InfoWindow(1, pMarcador)
// Configurar dimensões pInfoWindow.DefinirDimensoes(400, 250)
// Configurar fechamento automático pInfoWindow.ConfigurarAutoFechar(Verdadeiro, 3000) // 3 segundos
// Definir conteúdo personalizado pInfoWindow.DefinirConteudo("<div>Conteúdo HTML personalizado</div>") ```
### Marcadores Personalizados
```wlanguage // Criar marcador com configurações específicas pMarcador é um ponteiro para Marcador = Marcador.CriarPersonalizado( 99, -23.5505, -46.6333, "Meu Local", "Descrição detalhada", "https://exemplo.com/icone.png" )
// Adicionar informações extras pMarcador.AtualizarInformacoes( "Descrição completa", "Rua Exemplo, 123", "(11) 1234-5678", "08:00 - 18:00", "https://exemplo.com", 4.5 )
// Adicionar tags pMarcador.AdicionarTag("importante") pMarcador.AdicionarTag("favorito") ```
## Utilitários
### Exportação de Dados
```wlanguage // Exportar marcadores para JSON sJSON é uma cadeia = gMapsManager.ExportarMarcadoresJSON()
// Obter estatísticas sEstatisticas é uma cadeia = gMapsManager.ObterEstatisticas() ```
### Cálculo de Distâncias
```wlanguage // Calcular distância entre dois marcadores nDistancia é um real = pMarcador1.CalcularDistancia(pMarcador2) ```
## Melhores Práticas
### 1. Tratamento de Erros - Sempre use blocos `TRY/EXCEPTION` para operações críticas - Verifique se objetos não são `Nulo` antes de usar - Implemente logs para facilitar debugging
### 2. Gerenciamento de Memória - Use `delete` para liberar objetos dinâmicos - Implemente destrutores adequados - Monitore o uso de memória em aplicações com muitos marcadores
### 3. Performance - Limite o número de marcadores visíveis simultaneamente - Use filtros para reduzir a carga de processamento - Implemente paginação para grandes conjuntos de dados
### 4. Usabilidade - Forneça feedback visual para ações do usuário - Implemente tooltips e ajuda contextual - Use ícones intuitivos para diferentes tipos de marcadores
## Requisitos
- **WINDEV/WEBDEV**: Versão 28 ou superior - **Google Maps API Key**: Necessária para funcionamento - **Conexão com Internet**: Para carregar mapas e ícones - **Navegador**: Suporte a HTML5 e JavaScript
## Limitações Conhecidas
1. **API Quota**: Respeite os limites da API do Google Maps 2. **Performance**: Muitos marcadores podem impactar a performance 3. **Conectividade**: Requer conexão com internet para funcionar 4. **Compatibilidade**: Testado em WINDEV 28+
## Suporte e Contribuições
Para dúvidas, sugestões ou melhorias: 1. Consulte a documentação oficial do WINDEV 2. Verifique os logs de erro para debugging 3. Teste em ambiente controlado antes de produção
## Changelog
### Versão 5.0 (Atual) - ? Sistema OOP completo implementado - ? 16 tipos de marcadores categorizados - ? Balões informativos interativos - ? Sistema de busca e filtros avançados - ? Eventos de hover e clique - ? Exportação JSON - ? Controle de visibilidade por tipo - ? Cálculo de distâncias - ? Estatísticas e relatórios
### Versão Anterior - Implementação básica com HTML simples - Funcionalidades limitadas
## Licença
Este projeto é fornecido como exemplo educacional e pode ser adaptado conforme necessário para projetos específicos.
|
|
|
|
|
|
|
|
| Illustrations, copies d'écran |
|
|
|
| (Pour noter la ressource, cliquez sur Ecrire un avis) |
|
|
| pour pouvoir poster un avis |
|
|
|
|
|
|
|
|
| Aucun avis ou commentaire ? Soyez le premier ! |
|
|
|
| WINDEV, WEBDEV, WINDEV Mobile |
|
|
|
|
|