CrazyStack
Recursos Principais

Recursos Poderosos

Tudo que você precisa para criar aplicações de mapeamento profissionais

Geolocalização Avançada com Google Maps API

Implemente geolocalização precisa usando Google Maps JavaScript API e navegador. Tutorial completo para obter coordenadas GPS do usuário em aplicações React Next.js.

Saiba mais
Rotas Dinâmicas e Directions API

Crie rotas interativas com Google Maps Directions API. Aprenda a renderizar caminhos, calcular distâncias e implementar navegação turn-by-turn em React.

Saiba mais
Performance Otimizada Next.js

Carregamento assíncrono de Google Maps com Next.js. Otimizações de performance, lazy loading e melhores práticas para aplicações web rápidas.

Saiba mais
TypeScript Google Maps Integration

Tutorial TypeScript para Google Maps API. Tipagem completa, interfaces personalizadas e desenvolvimento type-safe com React e Next.js.

Saiba mais
Google Maps Services Completos

Integração completa usando @googlemaps/google-maps-services-js e @googlemaps/js-api-loader. Places API, Geocoding e todas as funcionalidades.

Saiba mais
Customização e Marcadores Personalizados

Crie marcadores personalizados, estilos de mapa únicos e componentes reutilizáveis. Tutorial completo de customização para Google Maps em React.

Saiba mais

Use Tab para navegar entre os recursos e Enter para mais detalhes

Setup Rápido

Configuração Rápida

Siga estes passos simples para começar a usar o Google Maps em seu projeto Next.js

1
Instalação

Instale as bibliotecas necessárias:

terminal
$ npm install @googlemaps/google-maps-services-js @googlemaps/js-api-loader
2
API Key

Configure sua chave de API do Google:

terminal
$ NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=YOUR_API_KEY
3
Configuração

Importe e use em seu componente:

terminal
$ import { useLoadMap } from "./hooks"

Exemplos de Código

Códigos prontos para usar do tutorial completo do Google Maps API

Instalação e Configuração
Setup
# Instalação das dependências
npm install @googlemaps/js-api-loader

# Configuração da API Key
# Adicione no seu arquivo .env.local:
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=sua_api_key_aqui

# Tipos TypeScript (opcional)
npm install --save-dev @types/google.maps
Tutorial Passo a Passo

Tutorial Completo

Siga nosso guia passo a passo para dominar a integração do Google Maps com Next.js

~110 min total
0/4 concluídos
1
Configuração Inicial
Fácil

Instale as dependências e configure a API key do Google Maps

15 min
Instalação de pacotes
Configuração de variáveis de ambiente
Setup inicial do projeto
Clique para marcar como concluído
2
Classes e Utilitários
Médio

Implemente as classes RouteGoogle e MapGoogle para gerenciar mapas e rotas

30 min
Classe RouteGoogle
Classe MapGoogle
Funções utilitárias
Conversão de dados
Clique para marcar como concluído
3
Hooks Personalizados
Médio

Crie hooks React para carregar mapas e gerenciar rotas

25 min
Hook useLoadMap
Hook useCreateMapRoute
Geolocalização
Estado do formulário
Clique para marcar como concluído
4
Interface do Usuário
Avançado

Desenvolva componentes React para interação com mapas

40 min
Formulário de criação
Autocompletar locais
Visualização de rotas
Marcadores personalizados
Clique para marcar como concluído

Progresso do Tutorial

0 de 4 etapas concluídas

Este é um material auxiliar do bootcamp CrazyStack Typescript do DevDoido. Ele servirá como uma espécie de documentação de alguns códigos vistos durante as aulas apenas como material complementar, garanta já sua vaga no bootcamp em crazystack.com.br.

Vamos pro código

O código TypeScript a seguir define uma classe chamada RouteGoogle, que implementa a interface RouteProtocol. Essa classe é responsável por criar e gerenciar uma rota no Google Maps, incluindo marcadores para o ponto de partida e de chegada, bem como um marcador que representa o veículo em movimento (por exemplo, um carro).

1. Importação de módulos e tipos:

import type { DirectionsResponseData } from "@googlemaps/google-maps-services-js";
import { RouteProtocol } from "./route.protocol";
import { convertDirectionsResponseToDirectionsResult } from "./mapUtils";
  • • A primeira linha importa o tipo DirectionsResponseData da biblioteca @googlemaps/google-maps-services-js. Este tipo é usado para lidar com os dados da resposta das direções do Google Maps.
  • • A segunda linha importa a interface RouteProtocol de um módulo local chamado route.protocol. Essa interface define um contrato que a classe RouteGoogle deve seguir.
  • • A terceira linha importa uma função convertDirectionsResponseToDirectionsResult do módulo mapUtils.

2. Declaração da classe RouteGoogle:

export class RouteGoogle implements RouteProtocol {
  // Propriedades da classe
}

A classe RouteGoogle é exportada e implementa a interface RouteProtocol.

3. Construtor:

constructor(options: {
  startMarkerOptions: google.maps.MarkerOptions;
  endMarkerOptions: google.maps.MarkerOptions;
  carMarkerOptions: google.maps.MarkerOptions;
}) {
  // Inicialização das propriedades da classe
}

O construtor da classe aceita um objeto options contendo três propriedades:startMarkerOptions, endMarkerOptions e carMarkerOptions. Essas opções são usadas para configurar os marcadores de início, fim e carro.

4. Inicialização de marcadores e DirectionsRenderer:

this.startMarker = new google.maps.Marker(startMarkerOptions);
this.endMarker = new google.maps.Marker(endMarkerOptions);
this.carMarker = new google.maps.Marker(carMarkerOptions);
const { strokeColor } = this.startMarker.getIcon() as google.maps.Symbol;
this.directionsRenderer = new google.maps.DirectionsRenderer({
  suppressMarkers: true,
  polylineOptions: { strokeColor, strokeOpacity: 0.5, strokeWeight: 5 },
});
this.directionsRenderer.setMap(this.startMarker.getMap() as google.maps.Map);

Neste trecho, três marcadores (startMarker, endMarker e carMarker) são criados com base nas opções fornecidas. O DirectionsRenderer também é configurado para exibir a rota no mapa. O estilo da linha da rota é definido com base na cor do ícone do marcador de início.

Código completo:

import type { DirectionsResponseData } from "@googlemaps/google-maps-services-js";
import { RouteProtocol } from "./route.protocol";
import { convertDirectionsResponseToDirectionsResult } from "./mapUtils";

export class RouteGoogle implements RouteProtocol {
  public startMarker: google.maps.Marker;
  public endMarker: google.maps.Marker;
  public carMarker: google.maps.Marker;
  public directionsRenderer: google.maps.DirectionsRenderer;
  
  constructor(options: {
    startMarkerOptions: google.maps.MarkerOptions;
    endMarkerOptions: google.maps.MarkerOptions;
    carMarkerOptions: google.maps.MarkerOptions;
  }) {
    const { startMarkerOptions, endMarkerOptions, carMarkerOptions } = options;
    this.startMarker = new google.maps.Marker(startMarkerOptions);
    this.endMarker = new google.maps.Marker(endMarkerOptions);
    this.carMarker = new google.maps.Marker(carMarkerOptions);
    const { strokeColor } = this.startMarker.getIcon() as google.maps.Symbol;
    this.directionsRenderer = new google.maps.DirectionsRenderer({
      suppressMarkers: true,
      polylineOptions: { strokeColor, strokeOpacity: 0.5, strokeWeight: 5 },
    });
    this.directionsRenderer.setMap(this.startMarker.getMap() as google.maps.Map);
  }
  
  delete(): void {
    this.startMarker.setMap(null);
    this.endMarker.setMap(null);
    this.carMarker.setMap(null);
    this.directionsRenderer.setMap(null);
  }
  
  async calculateRoute(
    directionsResponseData?: DirectionsResponseData & { request: any }
  ): Promise<void> {
    if (directionsResponseData) {
      const directionsResult = convertDirectionsResponseToDirectionsResult(
        directionsResponseData
      );
      this.directionsRenderer.setDirections(directionsResult);
    }
  }
  
  // Outros métodos da classe...
}
Comece Agora

Pronto para Começar?

Transforme suas ideias em aplicações web poderosas com mapas interativos e funcionalidades avançadas de geolocalização

Tutorial Completo

Acesse o tutorial detalhado com exemplos práticos

Código Fonte

Baixe todos os arquivos e exemplos do projeto

CrazyStack

Participe do bootcamp completo de TypeScript

Material auxiliar do CrazyStack Typescript do DevDoido

Garanta já sua vaga no bootcamp e domine o desenvolvimento full-stack com TypeScript

1000+ alunos
4.9/5 avaliação
50+ projetos