Foros del Web » Programando para Internet » Javascript »

Problema con gclientgeocoder

Estas en el tema de Problema con gclientgeocoder en el foro de Javascript en Foros del Web. Buenas: Estoy intentando crear un codigo que lea 2 puntos de la bbdd con PHP, una vez leido que consulte a google maps y me ...
  #1 (permalink)  
Antiguo 09/04/2012, 15:12
 
Fecha de Ingreso: abril-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Problema con gclientgeocoder

Buenas:
Estoy intentando crear un codigo que lea 2 puntos de la bbdd con PHP, una vez leido que consulte a google maps y me de la distancia que hay entre los dos.
La cuestion, es que no termino de hacer bien el codigo, y me da error, a ver si me pueden ayudar un poco.
Les dejo el codigo.
Saludos


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<script>
var geocoder, location1, location2;

var direccion1='melilla 67 la linea';
var direccion2='san pablo 33 la linea';
geocoder = new GClientGeocoder();

geocoder.getLocations(direccion1,
location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address});
geocoder.getLocations('direccion2',
location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address});



var glatlng1 = new GLatLng(location1.lat, location1.lon);
var glatlng2 = new GLatLng(location2.lat, location2.lon);
var miledistance = glatlng1.distanceFrom(glatlng2, 3959).toFixed(1);
var kmdistance = (miledistance * 1.609344).toFixed(1);

document.write('kmdistance '+ kilometers);



</script>
</body>
</html>
  #2 (permalink)  
Antiguo 09/04/2012, 17:08
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con gclientgeocoder

Veo varios errores que te los comento "groso modo":
- No veo la API de Google maps (<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=LA QUE TU TENGAS&amp;sensor=true" type="text/javascript"></script>
- La dirección ha de ir separada por comas.
- No entiendo esta línea (var miledistance = glatlng1.distanceFrom(glatlng2, 3959).toFixed(1);).

Dado que vengo trabajando con la V3 de Google (que difiere sustancialmente de la V2 que utilizas), he preferido rearmar la página, incluyendo el mapa correspondiente.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
</script>


<style type="text/css">
body {
margin: 20px;
font-family: courier, sans-serif;
font-size: 12px;
}
#map {
height: 480px;
width: 640px;
border: solid thin #333;
margin-top: 20px;
}
</style>

<script>

var map;
var geocoder;
var bounds = new google.maps.LatLngBounds();
var markersArray = [];

var origin1 = 'melilla 67, la linea';
var destination1 = 'san pablo 33, la linea';

var destinationIcon = "https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=D|FF0000|000000";
var originIcon = "https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=O|FFFF00|000000";

function initialize() {
var opts = {
center: new google.maps.LatLng(36.171486,-5.351801),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), opts);
geocoder = new google.maps.Geocoder();
}

function calculateDistances() {
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin1],
destinations: [destination1],
travelMode: google.maps.TravelMode.DRIVING, // SI VAS EN COCHE
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, callback);
}

function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
var outputDiv = document.getElementById('outputDiv');
outputDiv.innerHTML = '';
deleteOverlays();

for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
addMarker(origins[i], false);
for (var j = 0; j < results.length; j++) {
addMarker(destinations[j], true);
outputDiv.innerHTML += origins[i] + " a " + destinations[j]
+ ": " + results[j].distance.text + "en "
+ results[j].duration.text + "<br />";
}
}
}
}

function addMarker(location, isDestination) {
var icon;
if (isDestination) {
icon = destinationIcon;
} else {
icon = originIcon;
}
geocoder.geocode({'address': location}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
bounds.extend(results[0].geometry.location);
map.fitBounds(bounds);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: icon
});
markersArray.push(marker);
} else {
alert("Geocode was not successful for the following reason: "
+ status);
}
});
}

function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}

</script>
</head>
<body onload="initialize()">
<div id="inputs">
<pre class="prettyprint">
direccion1 = 'melilla 67, la linea';
direccion2 = 'san pablo 33, la linea';
</pre>
<p><button type="button" onclick="calculateDistances();">Calcula distancia</button></p>
</div>
<div id="outputDiv"></div>
<div id="map"></div>
</body>
</html>

Lo he dejado en modo de ruta en coche. Puedes calcularlo A PIE ("WALKING") o en linea recta (DIRECT).

Etiquetas: html, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.