Foros del Web » Programando para Internet » Javascript »

Detener la ejecución del código.

Estas en el tema de Detener la ejecución del código. en el foro de Javascript en Foros del Web. Hola, os escribo por exponeros el siguiente problema y ver si me podeis indicar una posible solución: -estoy desarrollando una aplicación en Google Maps (usaré ...
  #1 (permalink)  
Antiguo 02/12/2010, 12:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Detener la ejecución del código.

Hola, os escribo por exponeros el siguiente problema y ver si me podeis indicar una posible solución:

-estoy desarrollando una aplicación en Google Maps (usaré el término Gmaps a partir de ahora). Uno de mis scripts fcrea_waypoint.js) reciben un vector de direcciones, y construyen un objeto Marker para cada una de las direcciones pasadas.

-Pero dado que el objeto Marker exige como parámetro obligatorio un objeto LatLong tengo que realizar una llamada a la función fGeocodifica.js. La cual recibe la dirección como Parámetro, la Geocodifica y la devuelve como objeto LatLong.

-El siguiente paso sería asignarle el objeto LatLong a las propiedades del Marker y "lanzarlo" al mapa. Pero el código no funciona; a mi parecer es esto debido a:

-Tengo dos alerts, el primero al final de la función crea_waypoint y que debería ser el último en ejecutarse y otro dentro de la función Geocodifica, que debería ejecutarse (o eso creía) al recibir la respuesta de la Geocodificación y siempre antes de finalizar la función crea_waypoint. Pues esto no ocurre así, y es el alert de la función Geocodifica el que me llega al final.

-Mi impresión (puede que equivocada) es que el código (supongo que por correr del lado servidor) va mas rápido que la respuesta del servidor de Google y la Geocodificación llega tarde, por lo que mi navegador no asigna una posición correcta al Marker, y no se ejecuta correctamente.

Mi pregunta es: Suponiendo que la fuente de el error sea la que yo pienso ¿como puedo decirle al código de javascript que se detenga y no haga nada hasta recibir respuesta de la función Geocodifica?. Claro que puedo estar equivocado y que el origen del error sea otro, en cuyo caso agradecería que si veis algo en lo que yo no haya caido me lo digais.

Os pongo ambas funciones

fcrea_waypoints.js
Código:
function crea_waypoints(vector){
   var i=0;
   var contentString;
   var coord;
   var infowindow;
   var myLatlng;
   var marker;
   for (i=0;i<=vector.length-1;i++){
      contentString='<div id="content">'+
      '<div id="siteNotice"></div>'+
      '<h3 id="firstHeading" class="firstHeading"><CENTER>BLAH, BLAH, BLAH </CENTER></h3>'+
      '<div id="bodyContent">'+
      '<HR>'+
      '<p><CENTER>blah, blah, blah, blah, blah, blah...</CENTER></p>'+
      '</div>'+
      '</div>';
      infowindow = new google.maps.InfoWindow({
         content: contentString
      });
      myLatlng=Geocodifica(vector[i]);
      marker = new google.maps.Marker({
         position: myLatlng,
         map: map,
         title: 'Sustituir donde proceda'
      });
      infowindow.open(map,marker);
      alert("Debería salir al final");
   }
}

fGeocodica.js
Código:
function Geocodifica(parametro){
   alert("Geocodificamos");
   var geocoder;
   geocoder = new google.maps.Geocoder();
   geocoder.geocode( { 'address': parametro}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
         parametro=results[0].geometry.location.lat()+", "+results[0].geometry.location.lng();
         alert ("Dirección Geocodificada: "+parametro);
      }
      else{
         alert ("Google no encuentra la dirección. Asegurate que esta ha sido bien introducida")
      }
   });
   return parametro;
}
Esta será la segunda ocasión en la que me echais un cable, así que nuevamente muchas gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 05/12/2010, 05:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Respuesta: Detener la ejecución del código.

Hola, he estado dándome de golpes con el problema en cuestión y he descubierto el objeto xmlHttp, el cual si lo ejecuto de modo sincrónico obligará a mi código a detenerse y no avanzar mas hasta recibir respuesta. ¿Es esto cierto?, agradecería que me informarais si voy bien encaminado, o si por el contrario estoy equivocado.

El caso es que he añadido a mi script fcreawaypoint.js una serie de líneas, entre ellas:

Código:
CreateXmlHttp();
xmlhttp.open("GET", "http://localhost/gmaps/fGeocodifica.js",false);
Y es en esta línea donde se me para la ejecución, tanto con una ruta relativa, como absoluta. El caso es he observado que en todos los ejemplos de uso del objeto que he encontrado el parámetro URL va orientado a páginas php, html o a .txt. Pero nunca a un .js, ¿puede ser que esto no sea posible?.

Puede que el problema sea que estoy mezclando "churras con meninas" dada mi falta de base (por ejemplo no tengo claro si debería enviar los parámetros en la url concatenando esta con "?" con el objeto LatLon, o si debería enviarlo en el posterior xmlhttp.send();)

Cualquier ayuda, consejo por vuestra parte será muy de agradecer.

Etiquetas: detener
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 20:07.