Академический Документы
Профессиональный Документы
Культура Документы
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
GOOGLEAPIS
GoogleMapsAPIv3:Criandoum
mapapersonalizado
Por Rodolfo Pereira | 23 de maio, 2013 | 773 comentrios
DEMO
DOWNLOAD
API Key
Para comearmos, siga esse tutorial do prprio Google para pegarmos a API key, que nos
permitir monitorar a nossa aplicao e tambm til ao Google, caso ele tenha que
entrar em contato conosco para falar a respeito da nossa aplicao.
O uso da API key no obrigatrio se a sua aplicao no exceder o limite de consultas
dirio. Caso voc exceda o limite dirio, voc precisar da API key para aumentar o limite
de consultas ou para comprar uma quota de consulta maior.
Exibindo o mapa
Para exibirmos o mapa padro do Google Maps, vamos criar um simples documento HTML,
onde teremos um elemento com altura e largura definidos, uma chamada para o Maps API
Javascript, que a API do Google Maps, e uma chamada para o mapa.js que contm a
inicializao padro do nosso mapa.
1 <!DOCTYPE html>
2 <html lang="pt-br">
3
<head>
http://www.princiweb.com.br/blog/programacao/google-apis/google-maps-api-v3-criando-um-mapa-personalizado.html
4
<meta charset="utf-8"
5
<title>Google Maps API v3: Criando um mapa personalizado</
1/8
10/10/2014
6
7
8
9
10
11
12
13
14
15
16
17
18
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
</head>
<body>
<div id="mapa" style
</div>
var map;
function initialize() {
var latlng = new google.maps.LatLng(-18.8800397, -47.05878999999999);
var options = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
}
initialize();
Agora que exibimos o mapa, hora de inserirmos nossos pontos personalizados dentro do
mapa.
2/8
10/10/2014
13
14
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
Em seguida, criaremos uma funo para colocar esses trs pontos no mapa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function carregarPontos() {
$.getJSON('js/pontos.json'
$.each(pontos,
var marker =
position:
title:
map: map
});
});
});
}
carregarPontos();
Notem que estou usando jQuery para obter o arquivo JSON e devido a isso ns temos que
incluir a biblioteca jQuery na nossa pgina.
O cdigo acima simples:
1. Uso o $.getJSON para pegar todos os pontos;
2. Usando o $.each, pego cada ponto e vou colocando-os no mapa, definindo sua posio
(position), ttulo (title) e qual mapa (map) ele pertence.
O prximo passo personalizar esses pontos, trocando o marcador padro do Google Maps
e exibir uma caixa de informao personalizada ao clicar em cada marcador do mapa.
Personalizando os marcadores
Primeiro de tudo, vamos alterar o cone do marcador, colocando um personalizado. Aqui
voc tem, basicamente, duas opes: Criar um cone prprio ou pegar um pronto. Caso
queira pegar um pronto, recomendo o siteIcon Finder. No meu caso,usarei esse marcador.
Depois que voc escolher o marcador, nos parmetros dogoogle.maps.Marker, passe o
parmetro icon com o valor do endereo do seu marcador. Ficar assim:
1 ...
2
3 var marker = new google.maps.Marker({
4
position: new google.maps.LatLng(ponto.Latitude, ponto.Longitude),
5
title: "Meu ponto personalizado! :-D"
6
map: map,
7
icon: 'img/marcador.png'
8
}
)
;
http://www.princiweb.com.br/blog/programacao/google-apis/google-maps-api-v3-criando-um-mapa-personalizado.html
3/8
9
10/10/2014
10
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
...
Est comeando a ficar bonito! Agora vamos criar o balo de informao de cada ponto,
que ser exibido ao clicar nos marcadores dentro do mapa.
4/8
Para criar uma caixa de informao totalmente personalizada, irei utilizar oInfoBox, o qual
10/10/2014
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
}
...
"Id": 1,
"Latitude": -19.212355602107472,
"Longitude": -44.20234468749999
...
var idInfoBoxAberto;
var infoBox = [];
function abrirInfoBox(id, marker) {
if (typeof(idInfoBoxAberto) ==
infoBox[idInfoBoxAberto].close();
}
infoBox[id].open(map, marker);
idInfoBoxAberto = id;
function carregarPontos() {
...
var myOptions = {
content: "<p>Contedo do InfoBox</p>"
pixelOffset: new
};
infoBox[ponto.Id] =
infoBox[ponto.Id].marker = marker;
infoBox[ponto.Id].listener = google.maps.event.addListener(marker,
abrirInfoBox(ponto.Id, marker);
});
http://www.princiweb.com.br/blog/programacao/google-apis/google-maps-api-v3-criando-um-mapa-personalizado.html
5/8
10/10/2014
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
.infoBox { background-color
.infoBox p { padding: 0
.infoBox:before { border-left
Para resolver esse problema, iremos agrupar esses marcadores quando o mapa estiver com
pouco zoom, e conforme aumentarmos o zoom, iremos separar esses marcadores, de tal
forma que eles fiquem claramente separados. Para fazer esse processo, utilizaremos
o Marker Clusterer Plus, do Google Maps Utility Library v3.
Primeiro de tudo, baixe o Marker Clusterer Plus e referencie-o em nossa pgina HTML.
Aps isso, basta criar um array markers, o qual ir conter cada um dos marcadores, e
pass-los para o MarkerClusterer:
1
...
6/8
10/10/2014
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
function carregarPontos() {
$.getJSON('js/pontos.json'
$.each(pontos,
var marker =
position:
title:
icon: 'img/marcador.png'
});
...
});
};
});
markers.push(marker);
var markerCluster =
7/8
10/10/2014
10
11
12
13
14
15
16
17
18
19
20
21
Google Maps API v3: Criando um mapa personalizado - Google APIs - Programao - Blog Princi Agncia Web
latlngbounds.extend(marker.position);
});
var markerCluster =
map.fitBounds(latlngbounds);
});
...
Veja que o mapa carregou com um zoom de modo a exibir todos os pontos no mapa: Os
que havamos colocados previamente no Brasil, e um outro no extremo norte do mapa, na
Colmbia.
E isso! Terminamos nosso humilde mapa ;)
O cdigo completo da criao de mapa personalizado utilizando a API v3 do Google Maps
est no meu GitHub, caso voc queira estudar melhor o cdigo ou fazer alguma alterao.
Qualquer dvida, sugesto, crtica ou doao de cerveja, deixe um comentrio :)
At a prxima!
http://www.princiweb.com.br/blog/programacao/google-apis/google-maps-api-v3-criando-um-mapa-personalizado.html
8/8