Manejar um evento em um mapa de Google para reposicionar uma marca

Seguimos vendo exemplos de eventos em mapas de Google: evento click no mapa para recolocar uma marca.
Publicado em: 01/10/08

Valorize este artigo:
No anterior capítulo do manual de desenvolvimento com o API de mapas de Google vimos os primeiros detalhes sobre o tratamento de eventos. Agora vamos continuar com outro exemplo de desenvolvimento no qual vamos fazer um mapa que tem uma marca. Clicando em qualquer parte do mapa reposicionaremos a marca à posição onde se clicou.

O evento que veremos é o click no objeto map, da classe GMap2. Neste caso, recuperaremos o ponto onde se clicou para colocar a marca nesse ponto.

Primeiro, vejamos o código para criar o mapa com uma marca:

var map = new GMap2(document.getElementById("map"));   
map.setCenter(new GLatLng(40,-4),3);   
map.addControl(new GLargeMapControl());
map.setMapType(G_NORMAL_MAP);

var point = new GPoint (-4,40);
var marker = new GMarker(point);
map.addOverlay(marker);


Este mapa, centralizado na Espanha, tem uma marca também na Espanha. Agora vejamos o simples código para detectar um evento de tipo click sobre o mapa:

GEvent.addListener(map, "click", function (overlay,point){
   if (point){
      marker.setPoint(point);
   }
});


Cria-se o escutador de eventos, para o objeto map e o tipo de evento click, executando uma função que recebe dois parâmetros (overlay,point). Lembramos que overlay é a marca sobre a que se clicou, se é que se clicou em uma marca, e point é o ponto do mapa onde se clicou, se é que se clicou sobre uma área vazia do mapa.

Na função começamos com um if(point) que serve para saber se recebemos um ponto (Só recebemos o ponto se se clicou sobre uma área vazia do mapa), porque só então queremos recolocar a marca. Então, chamamos ao método da marca setPoint(point) para reposicionar a marca ao ponto recebido por parâmetro.

É bem simples, não é? Podemos ver o exemplo em funcionamento neste link.

Para acabar, deixo aqui o código completo deste exercício:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<title>Mapa de Google</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=chave"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[

function load() {
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("map"));   
      map.setCenter(new GLatLng(40,-4),3);   
      map.addControl(new GLargeMapControl());
      map.setMapType(G_NORMAL_MAP);
      
      var point = new GPoint (-4,40);
      var marker = new GMarker(point);
      map.addOverlay(marker);
      
      GEvent.addListener(map, "click", function (overlay,point){
         if (point){
            marker.setPoint(point);
         }
      });
   }
}

window.onload=load
//]]>
</script>

</head>

<body>
   <div id="map" style="width: 765px; height: 388px"></div>
   
</body>
</html>



Informe de Miguel Angel Alvarez - Tradução de JML



Usuários :    login / registro
Manuais relacionados
Categorias relacionadas

Home | Sobre nós | Copyright | Anuncie | Entrar em contato