Google Maps - Marcadores
Podemos desenhar objetos no mapa e vinculá-los a uma latitude e longitude desejadas. Eles são chamados de sobreposições. O Google Maps fornece várias sobreposições, conforme mostrado abaixo.
- Markers
- Polylines
- Polygons
- Círculo e retângulo
- Janela de informação
- Symbols
Para marcar um único local no mapa, o Google Maps fornece markers. Esses marcadores usam um símbolo padrão e esses símbolos podem ser personalizados. Este capítulo explica como adicionar marcadores e como personalizá-los, animá-los e removê-los.
Adicionando um Marcador Simples
Você pode adicionar um marcador simples ao mapa em um local desejado instanciando a classe do marcador e especificando a posição a ser marcada usando latlng, conforme mostrado abaixo.
var marker = new google.maps.Marker({
position: new google.maps.LatLng(19.373341, 78.662109),
map: map,
});
Exemplo
O código a seguir define o marcador na cidade Hyderabad (Índia).
<!DOCTYPE html>
<html>
<head>
<script src = "https://maps.googleapis.com/maps/api/js"></script>
<script>
function loadMap() {
var mapOptions = {
center:new google.maps.LatLng(19.373341, 78.662109),
zoom:7
}
var map = new google.maps.Map(document.getElementById("sample"),mapOptions);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(17.088291, 78.442383),
map: map,
});
}
</script>
</head>
<body onload = "loadMap()">
<div id = "sample" style = "width:580px; height:400px;"></div>
</body>
</html>
Ele produz a seguinte saída -
Animando o Marcador
Depois de adicionar um marcador ao mapa, você pode ir mais longe e adicionar animações a ele, como bounce e drop. O fragmento de código a seguir mostra como adicionar animações de salto e soltar a um marcador.
//To make the marker bounce`
animation:google.maps.Animation.BOUNCE
//To make the marker drop
animation:google.maps.Animation.Drop
Exemplo
O código a seguir define o marcador na cidade Hyderabad com um efeito de animação adicionado -
<!DOCTYPE html>
<html>
<head>
<script src = "https://maps.googleapis.com/maps/api/js"></script>
<script>
function loadMap() {
var mapOptions = {
center:new google.maps.LatLng(17.377631, 78.478603),
zoom:5
}
var map = new google.maps.Map(document.getElementById("sample"),mapOptions);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(17.377631, 78.478603),
map: map,
animation:google.maps.Animation.Drop
});
}
</script>
</head>
<body onload = "loadMap()">
<div id = "sample" style = "width:580px; height:400px;"></div>
</body>
</html>
Ele produz a seguinte saída -
Personalizando o Marcador
Você pode usar seus próprios ícones em vez do ícone padrão fornecido pelo Google Maps. Basta definir o ícone comoicon:'ICON PATH'. E você pode tornar este ícone arrastável definindodraggable:true.
Exemplo
O exemplo a seguir mostra como personalizar o marcador para um ícone desejado -
<!DOCTYPE html>
<html>
<head>
<script src = "https://maps.googleapis.com/maps/api/js"></script>
<script>
function loadMap() {
var mapOptions = {
center:new google.maps.LatLng(17.377631, 78.478603),
zoom:5
}
var map = new google.maps.Map(document.getElementById("sample"),mapOptions);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(17.377631, 78.478603),
map: map,
draggable:true,
icon:'/scripts/img/logo-footer.png'
});
marker.setMap(map);
}
</script>
</head>
<body onload = "loadMap()">
<div id = "sample" style = "width:580px; height:400px;"></div>
</body>
</html>
Ele produz a seguinte saída -
Removendo o Marcador
Você pode remover um marcador existente configurando o marcador para nulo usando o marker.setMap() método.
Exemplo
O exemplo a seguir mostra como remover o marcador de um mapa -
<!DOCTYPE html>
<html>
<head>
<script src = "https://maps.googleapis.com/maps/api/js"></script>
<script>
function loadMap() {
var mapOptions = {
center:new google.maps.LatLng(17.377631, 78.478603),
zoom:5
}
var map = new google.maps.Map(document.getElementById("sample"),mapOptions);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(17.377631, 78.478603),
map: map,
animation:google.maps.Animation.Drop
});
marker.setMap(null);
}
</script>
</head>
<body onload = "loadMap()">
<div id = "sample" style = "width:580px; height:400px;"></div>
</body>
</html>
Ele produz a seguinte saída -