Foros del Web » Programando para Internet » PHP »

Superposiciones en google maps con movimiento

Estas en el tema de Superposiciones en google maps con movimiento en el foro de PHP en Foros del Web. Hola Saludos a todos, este es mi primer post pues soy nuevo en la comunidad. Estoy realizando un proyecto con GPS y google maps, tenemos ...
  #1 (permalink)  
Antiguo 22/10/2011, 09:53
Avatar de CyberKabexa  
Fecha de Ingreso: octubre-2011
Ubicación: Merida
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 4
Superposiciones en google maps con movimiento

Hola Saludos a todos, este es mi primer post pues soy nuevo en la comunidad.

Estoy realizando un proyecto con GPS y google maps, tenemos unos dispositivos GPS que envian datos (latitud, longitud, velocidad, etc) a un servidor y se guarda en una base de datos SQL; por otro lado esta un portal web que muestra un mapa de google maps y en el mapa muestra la ubicacion de los vehiculos e incluso dibuja una linea mostrando su trayectoria más reciente, hasta ahi estamos bien pero lo que se pretende es que el objeto se vaya moviendo en el mapa a medida que se vaya actualizando la base de datos sin tener que refrescar la página o el mapa en si.

Algo como esto [URL="http://live.liveviewgps.com/"]http://live.liveviewgps.com/[/URL] se pretende.

De antemanos agradezco las ideas y la ayuda que me puedan proporcionar. Saludos!
  #2 (permalink)  
Antiguo 22/10/2011, 10:41
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Superposiciones en google maps con movimiento

y con ajax, hace un div que se vaya actualizando cada 1 segundo ejecutando la funcion que dibuja el mapa.

setTimeOut("actualizaMapa();",1000)

pd: La funcion tiene que ser recursiva!
  #3 (permalink)  
Antiguo 22/10/2011, 11:47
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Superposiciones en google maps con movimiento

¿cada segundo? ¿no es muy corto tiempo?
  #4 (permalink)  
Antiguo 22/10/2011, 12:07
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Superposiciones en google maps con movimiento

esta hablando de algo en tiempo Real,
si ven que tarda mucho en generar el mapa lo vas subiendo
sino ponele el que mas te gusta!
  #5 (permalink)  
Antiguo 22/10/2011, 12:11
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Superposiciones en google maps con movimiento

bueno pero no te enojes jaja, lo decia no más como comentario. :)
  #6 (permalink)  
Antiguo 27/10/2011, 08:37
Avatar de CyberKabexa  
Fecha de Ingreso: octubre-2011
Ubicación: Merida
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Superposiciones en google maps con movimiento

Cita:
Iniciado por Patriarka Ver Mensaje
y con ajax, hace un div que se vaya actualizando cada 1 segundo ejecutando la funcion que dibuja el mapa.

setTimeOut("actualizaMapa();",1000)

pd: La funcion tiene que ser recursiva!
Hola, gracias por tomarte el tiempo para contestar. Probé usando el setTimeOut como me sugeriste pero solamente se ejecuta una sola vez pasando X segundos, lo que necesito es que se ejecute una y otra vez pero cada vez que lo haga que consulte en la base de datos por si existen nuevos datos (por si el vehiculo cambia de posición); logré que la función se ejecute una y otra vez cada X segundos con setInterval pero lo que hace es pintar una y otra vez lo mismo encima, o sea no consulta en la base de datos y solamente dibuja la linea y la posición del vehiculo uno encima de otro.

Básicamente lo que necesito es que al abrir el portal me muestre la ubicación inicial del vehículo y que consulte en la base de datos cada 3 segundos, por decir algo, y que me muestre su posición nueva borrando la anterior para no encimar.

Cualquier nueva idea o sugerencia es bienvenida. Gracias!
  #7 (permalink)  
Antiguo 27/10/2011, 08:47
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Superposiciones en google maps con movimiento

mostrame la funcion que hace eso,
pero en resumen seria algo asi:
Código Javascript:
Ver original
  1. function actualizaMapa(){
  2. //GENERERO MAPA EN EL DIV ID="MAPA"
  3. //PARA NO REESCRIBIR ENCIMA DEL MAPA ENTONCES
  4. document.getElementById('MAPA').innerHTML="";
  5. setTimeOut("actualizaMapa()", 3000); //ACTUALIZO EL MAPA CADA 3 SEGUNDO
  6. }
  #8 (permalink)  
Antiguo 27/10/2011, 08:48
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Superposiciones en google maps con movimiento

Cita:
Iniciado por Patriarka Ver Mensaje
y con ajax, hace un div que se vaya actualizando cada 1 segundo ejecutando la funcion que dibuja el mapa.

setTimeOut("actualizaMapa();",1000)

pd: La funcion tiene que ser recursiva!
La función tiene que ser recursiva:

Código Javascript:
Ver original
  1. function actualizaMapa(){
  2.     //todo el código
  3.     setTimeout("actualizaMapa();", 1000);      
  4. }
  5.  setTimeout("actualizaMapa();", 1000);

Saludos
  #9 (permalink)  
Antiguo 27/10/2011, 08:49
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Superposiciones en google maps con movimiento

Cita:
Iniciado por Patriarka Ver Mensaje
mostrame la funcion que hace eso,
pero en resumen seria algo asi:
Código Javascript:
Ver original
  1. function actualizaMapa(){
  2. //GENERERO MAPA EN EL DIV ID="MAPA"
  3. //PARA NO REESCRIBIR ENCIMA DEL MAPA ENTONCES
  4. document.getElementById('MAPA').innerHTML="";
  5. setTimeOut("actualizaMapa()", 3000); //ACTUALIZO EL MAPA CADA 3 SEGUNDO
  6. }
  7.  
  8. //EJECUTO LA FUNCION POR PRIMERA VEZ
  9. window.onload=actualizaMapa;
  #10 (permalink)  
Antiguo 27/10/2011, 08:55
Avatar de CyberKabexa  
Fecha de Ingreso: octubre-2011
Ubicación: Merida
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Superposiciones en google maps con movimiento

Con este código pinto el mapa:

Código Javascript:
Ver original
  1. var map;
  2.     function initialize() {
  3.         var latlng = new google.maps.LatLng(15.623037,-90.351562);
  4.         var settings = {
  5.             zoom: 4,
  6.             center: latlng,
  7.             mapTypeControl: true,
  8.             mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
  9.             navigationControl: true,
  10.             navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN},
  11.             mapTypeId: google.maps.MapTypeId.ROADMAP
  12.     };
  13.  
  14. map = new google.maps.Map(document.getElementById("map_canvas"), settings);
  15.  
  16. setInterval("unidades()",2000);
  17. //unidades()
  18.  
  19. }
  20.  
  21.  
  22.       google.maps.event.addDomListener(window, 'load', initialize);

con setInterval llamó cada 2 segundos a la funcion unidades que es la que me muestra la ubicación del vehículo así como su trayectoria recorrida. Te la comparto, es esta:

Código Javascript:
Ver original
  1. function unidades(){
  2.  
  3. <?Php
  4.     $imei_sql="EXEC sp_GetIMEI";
  5.     $res_imei=mssql_query($imei_sql);
  6.    
  7.     while($array_imei=mssql_fetch_array($res_imei)){
  8.     $imei=$array_imei['IMEI'];
  9.     $sqlquery="EXEC sp_GetLastRecord '$imei'";
  10.     $res_sqlquery=mssql_query($sqlquery);
  11.     $ar_sqlquery=mssql_fetch_array($res_sqlquery);
  12.     //$latitud=$ar_query['LATITUDE'];
  13.     //$longitud=$ar_query['LONGITUDE'];
  14.     //$imei=$ar_query['IMEI'];
  15.     //$speed=$ar_query['SPEED'];
  16. ?>
  17.  
  18. var contentString = '<div class="content">'+
  19.                     '<div class="siteNotice">'+
  20.                     '</div>'+
  21.                     '<h3 class="firstHeading"><?Php echo $array_imei['NAME']; ?></h3>'+
  22.                     '<div class="bodyContent">'+
  23.                     '<p><?Php echo $ar_sqlquery['IMEI']; ?></p>'+
  24.                     '<p>Latitude: <?Php echo $ar_sqlquery['LATITUDE']; ?></p>'+
  25.                     '<p>Longitud: <?Php echo $ar_sqlquery['LONGITUDE']; ?></p>'+
  26.                     '<p>Velocidad: <?Php echo $ar_sqlquery['SPEED']; ?> Km/h</p>'+
  27.                     '<p><?Php echo $ar_sqlquery['TIMESTAMP']; ?></p>'+
  28.                     '<p><a target="_blank" href="http://maps.google.com/maps?f=q&q=<?Php echo $ar_sqlquery['LATITUDE']; ?>,<?Php echo $ar_sqlquery['LONGITUDE']; ?>&z=16">Ver en Google maps</a></p>'+
  29.                     '</div>'+
  30.                     '</div>';
  31.                 var infowindow<?Php echo $cont; ?> = new google.maps.InfoWindow({
  32.                     content: contentString
  33.                 });
  34.  
  35. /*Car*/
  36. var carLogo = new google.maps.MarkerImage('images/car.png',
  37.     new google.maps.Size(40,40),
  38.     new google.maps.Point(0,0),
  39.     new google.maps.Point(20,20)
  40. );
  41.  
  42. var carPos = new google.maps.LatLng(<?Php echo $ar_sqlquery['LATITUDE']; ?>,<?Php echo $ar_sqlquery['LONGITUDE']; ?>);
  43. var carMarker<?Php echo $cont; ?> = new google.maps.Marker({
  44.     position: carPos,
  45.     map: map,
  46.     icon: carLogo,
  47.     title:"<?Php echo $array_imei['NAME']; ?>"
  48. });
  49.  
  50. /*Muestra globo con la info*/
  51. google.maps.event.addListener(carMarker<?Php echo $cont; ?>, 'click', function() {
  52. infowindow<?Php echo $cont; ?>.open(map,carMarker<?Php echo $cont; ?>);
  53. });
  54.  
  55. /*Polilínea*/
  56. var Ruta = [
  57.                   <?Php
  58.                   $sql="EXEC sp_GetLastHundred '$imei'";
  59.                   $res_sql=mssql_query($sql);
  60.                   //$ar_sql=mssql_fetch_array($res_sql)
  61.                   while ($ar_sql=mssql_fetch_array($res_sql)){
  62.                   echo 'new google.maps.LatLng('.$ar_sql['LATITUDE'].','.$ar_sql['LONGITUDE'].'), ';
  63.                   } ?>
  64.                  
  65.                  
  66.     ];
  67.  
  68.   var carPath = new google.maps.Polyline({
  69.     path: Ruta,
  70.     strokeColor: "#FF0000",
  71.     strokeOpacity: 1.0,
  72.     strokeWeight: 4
  73.   });
  74.  
  75.   carPath.setMap(map);
  76.  
  77. <?Php $cont++; } ?>
  78. }

En la función unidades es donde hago la consulta a la BD.

Etiquetas: ajax, google, gps, javascript, maps, superposiciones
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

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 08:14.