Utilizando Googlemaps com Ionic 4

2018, Oct 20    

Você tem dúvidas de como usar os recursos do Googlemaps em seu projeto Ionic? Então vamos lá!

Iniciando o projeto Ionic

Abre o seu terminal e vamos iniciar o projeto Ionic e subir o servidor de desenvolvimento.

  $ ionic start ionic-4-googlemaps --type=angular  

Pode selecionar a opção blank como layout padrão, e vamos para os próximos comandos.

  $ cd ionic-4-googlemaps
  $ ionic serve

Adicionando o import da biblioteca JavaScript do googlemaps

No arquivo index.html basta adicionar o seguinte script

  <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY"></script>

Para adquirir a sua chave de api basta acessar o console do google.

Mão na massa

Vamos acessar o arquivo home.page.html e definir a estrutura inicial da seguinte forma.

<ion-header>
  <ion-toolbar color="primary">
    <ion-title>
      Ionic 4 googlemaps
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  
</ion-content>

Então, vamos adicionar uma div que será o container do nosso mapa.

<ion-header>
  <ion-toolbar color="primary">
    <ion-title>
      Ionic 4 googlemaps
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <div #map class="map"></div>
</ion-content>

Algumas estilizações serão necessárias, então no arquivo home.page.scss, vamos adicionar algumas regras para que esse mapa ocupe toda a tela do dispositivo, no caso deste exemplo, todo o ion-content.

.map {
  height: 100%;
  width: 100%;
}

Perfeito, mas isso não é suficiente para que tenhamos o mapa inicializado.

Vamos instalar a biblioteca de tipos do Googlemaps que nos permitirá utilizá-lo junto com typescript, dando uma facilidade imensa na hora de chamar os métodos e tipar nossas variáveis.

  $ npm install --save-dev @types/googlemaps 

Agora em nossa classe home.page.ts vamos adicionar algumas propriedades. Perceba que neste ponto, já utilizamos os recursos do pacote @types/googlemaps

  @ViewChild('map') mapRef: ElementRef;
  private map: google.maps.Map;
  private mapOptions: google.maps.MapOptions;
  • A primeira variável, o mapRef, é um viewChild que nos permitirá ter acesso diretamente ao elemento HTML nativo que será o container do nosso mapa.
  • A segunda variável, o map guardará de fato a instância do nosso mapa que será criado com a biblioteca do googlemaps.
  • A terceira, a mapOptions é também uma variável da classe, onde guardaremos as opções de inicialização do nosso mapa.

Vamos então no arquivo home.page.ts criar a função que irá inicilizar o mapa.

private initMap(): void {    
  const latLng: google.maps.LatLng = new google.maps.LatLng(-19.919157, -43.938547);
  this.mapOptions = {
    center: latLng,
    zoom: 15,
    mapTypeControl: false,
    fullscreenControl: false,
    streetViewControl: false,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    gestureHandling: 'cooperative'
  };
  this.map = new google.maps.Map(this.mapRef.nativeElement, this.mapOptions);

  new google.maps.Marker({
    position: new google.maps.LatLng(-19.919157, -43.938547),
    map: this.map,
  });

};

Feito isso, basta adicionar a chamada deste método no nosso hook ngOnInit

ngOnInit() {
  this.initMap();
}

Pronto! Isso será suficiente para ter o resultado abaixo.

Google Maps Ionic 4 Resultado

Este foi um tutorial bem rápido e a ideia não foi explicar a API do Googlemaps e sim mostrar quais são os passos para que você tenha essa estrutura funcionando em seu projeto Ionic 4.

Para entender mais da API do Googlemaps você pode acessar diretamente a documentação do Google, e, é claro que, todos esses métodos estarão disponíveis para serem utilizados na estrutura que instalamos no projeto.

Se você ficou com alguma dúvida sinta-se à vontade para perguntar, de qualquer forma o código deste exemplo está no meu github.

Obrigado e até a próxima! :+1: