Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Monan Bertoluci

Utilizando o google.maps.Geocoder de forma Synchrona

Recommended Posts

Pessoal, não sei se estou postando no lugar correto mas... estou com o seguinte problema:

 

Atualmente estou desenvolvendo um script que me retorne a latitude e longitude de alguns endereços. Tudo estava funcionando perfeitamente, até que cheguei no seguinte dilema: AS BUSCAS PELAS COORDENADAS UTILIZANDO A API DO GOOGLE OCORREM DE FORMA ASSINCRONA! Imagem Postada Buscando apenas um endereço, tudo funciona perfeitamente. Porém, meu sistema tem que buscar um vetor de endereços automaticamente, e para que isso funcione, eu inseri um FOR atrelado ao valor maximo de posições que meu vetor de endereços possui. Dentro deste FOR eu realizo a chamada da função da API do google que me dispara o retorno (no caso as coordenadas). Só que como estamos falando de solicitações assincronas o sistema não espera a resposta da primeira posição chegar e ja dispara outra consulta para a API. Alguem sabe como fazer o source abaixo trabalhar de forma Synchrona e não Asynchrona?

 

<!DOCTYPE html><html><head><meta name="viewport" content="initial-scale=1.0, user-scalable=no"/><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><title></title><link href="standard.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><script type="text/javascript"src="http://www.google.com/jsapi?key=Key_API"></script><script type="text/javascript" charset="utf-8">google.load("jquery","1.3.2");</script><script type="text/javascript">  var geocoder;  var address;    $(document).ready(function(){     geocoder = new google.maps.Geocoder();		//assim que o usuario clicar em carregar, os endereços são carregados em um vetor.	$("#carregar").click(function(){		$.ajax({type: 	 "POST",				url:  	 "endereco.php",				dataType:"json",				async: false,				success: function(data){					address = data;				}			});	});	//ao clicar em geocode ele realiza a busca da lat e long pelo endereço do usuário e retorna sua lat e long.  $("#geocode").click(function(){		//SE O OBJETO FOR INSTANCIADO...    if (geocoder) {			//percorra todos os endereços		for (var i=0;i<=address.length;i++){						//AQUI QUE O SISTEMA REALIZA O DISPARO ASSINCRONO... 			geocoder.geocode( { 'address': address[i]}, function(results, status){		        if (status == google.maps.GeocoderStatus.OK) {					alert(results[0].geometry.location;);		        }			});		}		    }  });			  });  </script></head><body>  <div>    <input type="button" value="Geocode" id="geocode">	<input type="button" value="Carregar" id="carregar">  </div></body></html>

 

Desde de ja agradeço. Imagem Postada

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.