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.
Tutorial Google Maps API
React Next.js TypeScript
Tutorial completo de integração Google Maps JavaScript API com React Next.js. Aprenda geolocalização, mapas interativos, rotas dinâmicas e marcadores personalizados usando TypeScript e as melhores práticas de desenvolvimento web.
Material auxiliar do CrazyStack Typescript do DevDoido
Recursos Poderosos
Tudo que você precisa para criar aplicações de mapeamento profissionais
Crie rotas interativas com Google Maps Directions API. Aprenda a renderizar caminhos, calcular distâncias e implementar navegação turn-by-turn em React.
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.
Tutorial TypeScript para Google Maps API. Tipagem completa, interfaces personalizadas e desenvolvimento type-safe com React e Next.js.
Integração completa usando @googlemaps/google-maps-services-js e @googlemaps/js-api-loader. Places API, Geocoding e todas as funcionalidades.
Crie marcadores personalizados, estilos de mapa únicos e componentes reutilizáveis. Tutorial completo de customização para Google Maps em React.
Use Tab para navegar entre os recursos e Enter para mais detalhes
Configuração Rápida
Siga estes passos simples para começar a usar o Google Maps em seu projeto Next.js
Instale as bibliotecas necessárias:
Configure sua chave de API do Google:
Importe e use em seu componente:
Exemplos de Código
Códigos prontos para usar do tutorial completo do Google Maps API
# 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 Completo
Siga nosso guia passo a passo para dominar a integração do Google Maps com Next.js
Instale as dependências e configure a API key do Google Maps
Implemente as classes RouteGoogle e MapGoogle para gerenciar mapas e rotas
Crie hooks React para carregar mapas e gerenciar rotas
Desenvolva componentes React para interação com mapas
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 chamadoroute.protocol
. Essa interface define um contrato que a classeRouteGoogle
deve seguir. - • A terceira linha importa uma função
convertDirectionsResponseToDirectionsResult
do módulomapUtils
.
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...
}
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