Problemas con Javascript, php y google maps

Estoy haciendo haciendo una pag de una inmobiliaria y quiero mostrar utilizando el api de google maps marcadores sacando las coordenadas desde mi bd en MySql. Recibo del formulario las variables con las que voy a realizar la búsqueda, y acá es dde tengo dos problemas una que al colocar el código php en la pag no me muestra nada del mapa y segundo no puedo invocar desde PHP a la función Javascript que es quien crea el marcador. Gracias por su ayuda de antemano. Saludos
Acá les pego el código:
<script type="text/javascript">
//<![CDATA[
   function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(-31.535238, -68.512115), 11);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
}
  }
function createMarker(x,y) {
 var marca=new GMarker(map.getCenter());
  map.addOverlay(marca);
  map.setCenter(new GLatLng(x,y),2);
 return;
}
//]]>
</script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="map_canvas" style="width: 500px; height: 300px"></div>
  <?php
echo ("entro a php");
include "utiles_php.php";
$link=conectar();
$cod_prop=$_GET["descrip1"];
$cod_dpto=$_GET["descrip2"];
$min=$_GET["minimo"];
$max=$_GET["maximo"];
$cant_habit=$_GET("cant_habit");
$result=mysql_query("select * from inmueble join tipo_prop on inmueble.tipo_cod_prop=tipo_prop.cod_prop where tipo_prop.cod_prop =$cod_prop");
echo "
<script>"; 
while($row=mysql_fetch_array($resul)){ 
   $x=$row["lat"];
   $y=$row["lng"];
   echo $x;
  echo "createMarker($x,$y)";
  echo "</script>
";  
}
?>
</body>
</html>

1 respuesta

Respuesta
2
Lo estas haciendo al revés. Primero estas poniendo el código de google y luego haces la consulta sql. Hazlo justo al contrario...
<?php
Sacar los datos de la BD
?>
<script>
Poner api de google y donde corresponda
<?php echo $longitud ?>
<?php echo $latitud ?>
</script>
Hola gracias por tu ayuda, la cosa es que hice lo que me sugeriste y coloque el cod php primero arriba inclusive del cod html, en el head puse la inicialización y la función javascript llamada desde php. Pero me da error, dice que la función no esta definida y ya cbie de lugar a todo probando y no hay caso. Te pego el código para que lo veas a ver si me podes dar una mano. Gracias
<?php
include "utiles_php.php";
$link=conectar();
$cod_prop=$_REQUEST["cod"];
$result=mysql_query("select * from inmueble join tipo_prop on inmueble.tipo_cod_prop=tipo_prop.cod_prop where tipo_prop.cod_prop = '$cod_prop'");
while($row = mysql_fetch_array($result))
{  $x= $row["lat"];
   $y=$row["lng"];
   echo "
<script>";
   echo "creamarcador('$x','$y');";
   echo "</script>
";
  // echo 'alert('creamarcador('".$x."','".$y."')''; // PROBE TODAS ESTAS LLAMADAS
  // echo "creamarcador($x,$y);";
  // echo "creamarcador('".$x."','".$y."');";
   //echo "creamarcador('$x','$y');";
}
?> 
<head>
<script type="text/javascript">
//<![CDATA[
function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(-31.535238, -68.512115), 11);       
}
  }
 function creamarcador(x,y) {
  var map = new GMap2(document.getElementById("map_canvas"));
  map.setCenter(new GLatLng(-31.535238, -68.512115), 11);
var marca=new GMarker(x,y);
  map.addOverlay(marca);
 return;
}
//]]>
</script>
</head>
Entiendo. Al igual que debes colorar el PHP antes para consultar los datos, cuando haces un echo del script debes hacerlo entero. Así,
echo "
<script>";
   Aquí tienes que poner un echo que escriba la definición de ela función
crearmarcador, así:
echo "function creamarcador(x,y) {\n";
echo "  var map = new GMap2(document.getElementById(\"map_canvas\"));\n";
Etc...
Y luego lo siguiente...
   echo "creamarcador('$x','$y');";
   echo "</script>
";
PHP lo único que hace es "preparar" el código HTML que va a ejecutar el navegador, y teniendo en cuenta eso, si PHP toca JavaScript, este debe estar bien definido. En tu caso, si vas a parametrizar la función creamarcador, la definición de la misma debe estar antes en el código final.
Ten mucho cuidado de poner cada linea con un \n y escapar las comillas, ¿ok?
Hola yo de nvo jjeje he logrado colocar el código entre echo, y sigue mostrando el mapa. Pero me aparece un error, en el que dice que GMap2 no esta definido cdo crea el objeto map, y este (GMap) es de google maps, ¿qué se le debe agregar para que no de error?
Gracias de nuevo y disculpa tanta preguntas, es que soy novata.
echo "  var map = new GMap2(document.getElementById(\"map_canvas\"));\n";
Tranquila, para eso estamos.
GMap2 es una función definida en la API de GoogleMaps. Como tal, debes declararla dentro del código
<script> que estas metiendo dentro de PHP, si no, no te funcionará.
Para usar la API te habrán dado un identificador. Deberas hacer algo parecido a esto:
echo "<script src=\"http://maps.google.com/maps?file=api&v=2&sensor=false&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA\"
type="text/javascript">\n";
echo "</script>
\n";
Pon aquí el código que ya te funciona
Y todo debe ir como la seda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas