Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2007
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 19
halizia Va por buen camino
arrays javascript y php

Hola!

resulta que tengo una funcion en php, que recibe un array por parámetro y dentro de esa función hay código javascript. Lo que quiero hacer es usar ese array que tiene de parámetro la funcion y usarlo en el código javascript, y no sé qué hago mal porque no lo lee. El código en javascript lo que hace es mostrar un mapa de google maps, y el array contiene las latitudes y longitudes de unas ciudades.

Saludos.
Responder Con Cita
  #2  
Antiguo 03-05-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
¿Puedes mostrar el código? sin el código es muy difícil darte una solución a ese problema.
Responder Con Cita
  #3  
Antiguo 03-05-2007
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 19
halizia Va por buen camino
Código PHP:
<?
function dibujarmapa(){
        
$plantas=consulta_todas_plantas();
                    
$datos=array();
                    
$i=0;
                    foreach(
$plantas->row as $row){
                        
$pl=consulta_datosplanta_segun_id_planta($row->id_installation);
                        if (
$pl->row->latitude_degree>0){
                             
$lat=round($pl->row->latitude_degree+($pl->row->latitude_minute/60),3);
                          }else{
                             
$lat=round($pl->row->latitude_degree-($pl->row->latitude_minute/60),3);
                          }
                          if (
$pl->row->longitude_degree>0){
                              
$long=round($pl->row->longitude_degree+($pl->row->longitude_minute/60),3);
                          }else{
                            
$long=round($pl->row->longitude_degree-($pl->row->longitude_minute/60),3);
                          }
                        
$datos[$i][0]=$lat;
                        
$datos[$i][1]=$long;
                        
$i++;
                        
//echo $row->name." ".$lat." ".$long."<br>";
                    
}
    
?>
                    <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Google estado_historico_grupo JavaScript API Example</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;hl=es&amp;key=clave" charset="iso-8859-1"
            type="text/javascript"></script>
    <script type="text/javascript">
    
    function load() {
      if (GBrowserIsCompatible()) {
      

        var map = new GMap2(document.getElementById("map"));
        //map.setMapType(new GMapType("G_HYBRID_MAP"));
        
         
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        
        map.setCenter(new GLatLng(40,-3), 5);//centrar en madrid
        
        // Create our "tiny" marker icon
        var icon = new GIcon();
        icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
        icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
        //situar el icono
        var point = new GLatLng(42,1);//aqui iría el acceso al array pero no sé cómo hacerlo
        map.addOverlay(new GMarker(point, icon));
         map.setMapType(G_HYBRID_TYPE);
      }
    }

    </script>
  </head>
  <body onload="load()" onunload="GUnload()">
    <div id="map" style="width: 500px; height: 300px"></div>
  </body>

</html>
<?
    
}
Responder Con Cita
  #4  
Antiguo 03-05-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Por lo que entiendo del código, la función dibujarMapa, carga las coordenadas las traduce a coordenadas de googleMaps, y las guarda en un array. Lo que tendrías que hacer es guardar esos datos en un array externo de la función y usarlo después, quitando el código html y javascript de dentro de la función. Algo así:

Código PHP:
<?
function dibujarmapa(){
    
$plantas=consulta_todas_plantas();
    
$datos=array();
    
$i=0;
    foreach(
$plantas->row as $row){
        
$pl=consulta_datosplanta_segun_id_planta($row->id_installation);
        if (
$pl->row->latitude_degree>0){
             
$lat=round($pl->row->latitude_degree+($pl->row->latitude_minute/60),3);
          }else{
             
$lat=round($pl->row->latitude_degree-($pl->row->latitude_minute/60),3);
          }
          if (
$pl->row->longitude_degree>0){
              
$long=round($pl->row->longitude_degree+($pl->row->longitude_minute/60),3);
          }else{
            
$long=round($pl->row->longitude_degree-($pl->row->longitude_minute/60),3);
          }
        
$datos[$i][0]=$lat;
        
$datos[$i][1]=$long;
        
$i++;
        
//echo $row->name." ".$lat." ".$long."<br>";
    
}
    return 
$datos;
                    
}
?>

<?php $coordenadas dibujarmapa(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Google estado_historico_grupo JavaScript API Example</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;hl=es&amp;key=clave" charset="iso-8859-1"
            type="text/javascript"></script>
    <script type="text/javascript">
    
    function load() {
      if (GBrowserIsCompatible()) {
      

        var map = new GMap2(document.getElementById("map"));
        //map.setMapType(new GMapType("G_HYBRID_MAP"));
        
         
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        
        map.setCenter(new GLatLng(40,-3), 5);//centrar en madrid
        
        // Create our "tiny" marker icon
        var icon = new GIcon();
        icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
        icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
        //situar el icono
        var point = new GLatLng(<?php echo $coordenadas[0][0]; ?><?php echo $coordenadas[0][1]; ?>);//aqui iría el acceso al array pero no sé cómo hacerlo
        map.addOverlay(new GMarker(point, icon));
         map.setMapType(G_HYBRID_TYPE);
      }
    }

    </script>
  </head>
  <body onload="load()" onunload="GUnload()">
    <div id="map" style="width: 500px; height: 300px"></div>
  </body>

</html>

Donde $coordenadas tiene los datos de las coordenadas de los mapas. Luego sólo tienes que mostrarlos dentro del javascript con <?php echo $coordenadas[0][0]; ?> y <?php echo $coordenadas[0][1]; ?>, el primer índice indica el mapa que quieres mostrar y el segundo 0 para latitud y 1 para longitud.
Responder Con Cita
  #5  
Antiguo 03-05-2007
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 19
halizia Va por buen camino
Gracias, basti

pero resulta que no sólo hay una fila en el array de coordenadas si no que hay varios, en concreto más de 40, y lo que tengo que hacer es un bucle dentro del código javascript pero no me sale.


Código PHP:
<?
 
for ($i=0;$i<count($coordenadas);$i++) {
var 
point = new GLatLng(<?php echo $coordenadas[$i][0]; ?><?php echo $coordenadas[$i][1]; ?>);//aqui iría el acceso al array pero no sé cómo hacerlo
        map.addOverlay(new GMarker(point, icon));
}
?>
Muchas gracias.
Responder Con Cita
  #6  
Antiguo 03-05-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Código PHP:
<?
 
for ($i=0;$i<count($coordenadas);$i++) {
var 
point = new GLatLng(<?php echo $coordenadas[$i][0]; ?><?php echo $coordenadas[$i][1]; ?>);//aqui iría el acceso al array pero no sé cómo hacerlo
        map.addOverlay(new GMarker(point, icon));
}
?>
Aquí estás mezclando código php con código javascript, por eso no te sale. Todo el código javascript que quieras mostrar tienes que meterlo dentro de un echo:
Código PHP:
<?
 
for ($i=0;$i<count($coordenadas);$i++) {
   echo 
'var point = new GLatLng(' .  $coordenadas[$i][0] . ',' $coordenadas[$i][1] . ');';
   echo 
' map.addOverlay(new GMarker(point, icon));';
}
?>
Responder Con Cita
  #7  
Antiguo 03-05-2007
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 19
halizia Va por buen camino
Muchas gracias!!

yo creia q era mas dificil y sólo hay que hacer un echo!!!

muchas gracias basti
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
arrays dinamicos Chompiras Varios 8 14-07-2015 22:49:51
ayuda con arrays chanex Varios 3 27-05-2006 00:22:44
arrays nenufer Varios 7 13-05-2006 21:44:51
Arrays asociativos Bauhaus1975 Varios 2 27-04-2006 11:25:23
funcion arrays fabian20s Varios 3 19-07-2005 17:06:34


La franja horaria es GMT +2. Ahora son las 00:08:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi