Jump to content


rickjames

Member Since 20/06/2007
Offline Last Active 15/09/2009, 09:46
-----

#935539 Polylines Com Php E Mysql.

Posted by rickjames on 08/09/2008, 14:21


Estou fazendo uma aplicação com PHP e Google Maps para exibir uma polyline ligando diversos pontos, latitude e longitude, armazenados em uma base de dados MySQL. Tenho já uma experiencia boa com Javascript e Google Maps API mas sou novo em PHP. Não consegui ainda acertar um loop correto que pegue todos os pontos da tabela embora eu saiba qual a função do Google disponivel , GPolyline. Tentei este aqui agora :
<body> 
<div id="map" style="width: <?php echo $map_width ?>px; height: <?php echo $map_height ?>px">
</div>
&lt;script type="text/javascript">
//<![CDATA[
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(<?php echo $initial_lat ?>, <?php echo $initial_lon ?>), <?php echo $initial_zoom ?>);
<?php
$link = mysql_connect($dbserver, $username, $password)
  or die("Could not connect: " . mysql_error());

mysql_select_db($dbname,$link) or die ("Can\'t use database : " . mysql_error());

$sql = "SELECT lat,lng FROM geo_points WHERE route=1";	

$result = mysql_query($sql,$link);
if (!$result)
{
  echo "no results";
}
   else 
   {

while($row = mysql_fetch_array($result))
{  
$polylat = $row['lat'];  
$polylng = $row['lng'];  
  $geometry = str_replace($polylat,",",$polylng); 
  $points = explode(",",$geometry);
  $numpoints = sizeof($points);
  echo "var polyline = new GPolyline(["; 
  for ($i = 0; $i <= ($numpoints - 1); $i++) {
	$coordinates = explode(",",$points[$i]);
	echo "new GLatLng(" . $coordinates[1] . "," . $coordinates[0] . ")";
	if ($i != ($numpoints - 1)) {
	  echo ",\n";
	} else {
	  echo "\n";
	}
  }
  echo "],\"#ff0000\", 5, 1);\n";
  echo "map.addOverlay(polyline);\n\n";
}
   
}

Porém não exibe o mapa na coordenada selecionada nem a polyline traçando a rota.
No "ver código-fonte" da página , pelo navegador, este mostra esta saida :

var polyline = new GPolyline([new GLatLng(,25.0499)
],"#ff0000", 5, 1);
map.addOverlay(polyline);

Isto é, ele faz o loop de todos os pontos mas pega sómente uma coordenada, longitude.
Gostaria de saber porque ele não pega a latitude. Acho que o erro está no PHP. Agradeço uma help para localizá-lo.
Djalma.



IPB Skin By Virteq