Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/05/2015, 02:49
mugen90
 
Fecha de Ingreso: mayo-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Respuesta: Problemas con API de Google Maps

Buenos días txemaarbulo.
Si, los datos están guardados en bbdd mysql.
El link es un <a href=#> que lleva a la hoja en donde se carga el mapa a partir de las coordenadas. Esas coordenadas son descifradas por una función a la que le paso esos parámetros GET.

La hoja en donde cargo el mapa es la siguiente:
<?php
$adreca=$_GET["n"].", ".$_GET["c"].", ".$_GET["p"].", Tarragona";
$nombre_comercial=$_GET["nc"];
$coords = $calculs->getCoordinates($adreca);
print_r($adreca);
echo $nombre_comercial;
echo "coord1:".$coords[0]." coord2:".$coords[1]."<br>";
?>
<div id="map_canvas" style="width: 100%; height: 80%;"></div>
<script language="javascript">
mapa('<?=$coords[0] ?>','<?=$coords[1] ?>','<?=$nombre_comercial ?>')
</script>

La función getCoordinates() es la siguiente:
public function getCoordinates($address){
$address = urlencode($address);
$url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" . $address;
$response = file_get_contents($url);
$json = json_decode($response,true);

$lat = $json['results'][0]['geometry']['location']['lat'];
$lng = $json['results'][0]['geometry']['location']['lng'];

return array($lat, $lng);
}

Y la función mapa:
function mapa(lat,lon,nombre_comercial) {
alert(lat+" "+lon)
var myLatlng = new google.maps.LatLng(lat, lon);
var myOptions = {
zoom: 28,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.SATELLITE
};

var map = new google.maps.Map($("#map_canvas").get(0), myOptions);

var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:nombre_comercial
});

}
**He podido ver de donde viene el problema. En local no existe dicho problema, pero por algún motivo la función getCoordinates() en servidor no devuelve nada y lógicamente no puede generar el mapa. Si puedes analizarla y ves algo que yo no haya podido ver agradecería que me lo comentarás! Muchas gracias!

EDITO:

public function getCoordinates($numero,$calle,$poblacion,$provinci a){
$address=$numero.",".$calle.",".$poblacion.",".$pr ovincia."";
//$address = urlencode($address);
$url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" . $address;
print_r($url);
$response = file_get_contents($url);
$json = json_decode($response,true);
$lat = $json['results'][0]['geometry']['location']['lat'];
$lng = $json['results'][0]['geometry']['location']['lng'];
return array($lat, $lng);
}

Modifique esta función que es de donde procede el problema. La dirección se pasa correctamente por la url y genera la correspondiente estructura json. $lat y $lng se resuelven correctamente pero las variables no cogen el valor que les correspondería y se quedan vacías. $json['results'][0]['geometry']['location']['lat'] comprobé que realmente apuntaba a la información deseada y así es.

Última edición por mugen90; 25/05/2015 a las 03:12