Passare dati a google maps

marcoint

Utente Attivo
8 Gen 2014
58
0
0
Ragazzi qualcuno sa come creare una mappa google sul proprio sito passandosi dei parametri? Ad esempio scegliendo località , ristorante, e luogo di partenza, potrei creare una mappa di google che indichi l'itinerario da seguire? Si può fare una cosa del genere?
 
In alternativa se non si può creare un itinerario posso creare una mappa come quella di pagine bianche, che quindi mi mostri almeno la posizione del luogo?
 
ciao
non so se ti va bene, io uso la latitudine e la longitudine per posizionare il mark
nell'head
PHP:
<head>
<!--... css e quant'altro ti serva -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="gmaps.js"></script>
</head>
<body>
<?php
//estrai latitudine e longitudine o li valorizzi
//io le ho in un database
//es.
$tipo_map="ROADMAP";//o "SATELLITE" o "TERRAIN"
$zoom=2;//zoom della mappa
$lat=42.747012;//latitudine del punto
$lon=12.429198;//longitudine
?>
<script type="text/javascript">
	var map;
   $(document).ready(function(){
      //prettyPrint();
      map = new GMaps({
        div: '#map',
		lat: <?php echo $lat;?>,
		lng: <?php echo $lon;?>,
		mapTypeId: google.maps.MapTypeId.<?php echo $tipo_map; ?>,
		zoom: <?php echo $zoom;?>
      });
      map.addMarker({
        lat: <?php echo $lat;?>,
        lng: <?php echo $lon;?>,
        title: '<?php echo $local[$l];?>',
      });
    });
</script>
      <div id="map"></div><!--qui si visualizza la mappa che con altri div sistemerai come vuoi -->
</body>

p.s.
però porta un po' di pazienza non uppare così i post
 
Ciao si grazie mille, e scusa per l'upp irregolare. Allora credo di aver capito come funziona, però praticamente facendo copia e incolla del tuo codice non visualizza niente come mai? In ogni caso era proprio quello che volevo, se magari puoi sistemare questa cosa :) In più se volessi fare come hai fatto tu, e quindi utilizzando un database le coordinate le salvo come campi INT o come altri campi particolari?
 
Ciao, vi segnalo 2 problemi
PHP:
title: '<?php echo $local[$l];?>',
l'array $local e la variabile $l non sono presenti nello script
HTML:
<script type="text/javascript" src="gmaps.js"></script>
per includere gmaps.js bisogna averlo sul server nella stessa directory altrimenti si puo andare a prendere da un altra parte
HTML:
<script type="text/javascript" src="http://www.borgo-italia.it/mappe/gmaps.js"></script>

detto questo io userei una mappa statica usando il codice che fornisce la pagina di google maps
 
ciao criric
hai ragione ho fatto copy/paste di una parte e quel $local[$l] è rimasto indietro
poi per il js mi sembrava logico che scritto così uno dovesse averlo sul server, comunque è scaricabile anche da google
 
Scusate l'ignoranza ricapitolando il codice aggiustato come sarebbe? PS: grazie mille a tutti e due ,la mia intenzione era proprio fare una cosa simile al tuo sito :)
 
detto questo io userei una mappa statica usando il codice che fornisce la pagina di google maps
A me servirebbe però che non sia fissa questa mappa ma che appaia solo quando io clicco su un
PHP:
<?php <a href="mappa.php?ristorante=$ristorante">mappa</a> ?>
Ovviamente sulla pagina mappa.php estrarrò dal database, attraverso il nome del ristorante che mi sono passato, le coordinate del luogo e poi farò uscire la mappa. Ma voglio appunto che quest'ultima esca solo quando uno preme su mappa non che sia fissa diciamo.
 
Mancano anche le dimensioni del div #map
prova questo
PHP:
<head>
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
    <script type="text/javascript" src="http://www.borgo-italia.it/mappe/gmaps.js"></script>
    <style type="text/css">
        #map {
            width: 400px;
            height: 400px;
            float:left;
        }
        ul.city {
            float: left;
            list-style-type: none;
        }
    </style>
</head>
<body>
    <?php
    $array = array(
        "trento" => "46.085614,11.12011",
        "verona" => "45.450497,10.99102",
        "modena" => "44.654978,10.92001",
        "bologna" => "44.50679,11.343269"
    );
    ?>
    <script type="text/javascript">
        var map;
        $(document).ready(function(){           
            creaMappa("46.085614","11.12011","Trento");       
            $("ul.city a").click(function(e){
                e.preventDefault();
                var coord = $(this).attr("href").split(",");
                var tit = $(this).html();
                creaMappa(coord[0],coord[1],tit);
            })
        });
        function creaMappa(lat,lon,tit) {            
            map = new GMaps({
                div: '#map',
                lat:lat,
                lng: lon,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                zoom: 10
            });
            
            map.addMarker({
                lat: lat,
                lng: lon,
                title: tit
            });
        }
        
    </script>
    <div id="map"></div>
    <ul class="city">
        <?php
        foreach ($array as $key => $value) {
            echo "<li><a href='" . $value . "'>$key</li>";
        }
        ?>
    </ul>
</body>
l'array php lo puoi creare con una query sul db
 
Ultima modifica:
Si l'ho provato l'unico problema erano le dimensioni del div #map
 
ciao
edit: c...o, mi ero dimenticato il css con le dimenzioni del div, così funzia
PHP:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="iso-8859-1">
<!--... css e quant'altro ti serva -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="gmaps.js"></script>
 <style type="text/css">
        #map {
            width: 400px;
            height: 400px;
            float:left;
        }
        ul.city {
            float: left;
            list-style-type: none;
        }
    </style>
</head>
<body>
<?php
//estrai latitudine e longitudine o li valorizzi
//io le ho in un database
//es.
$tipo_map="ROADMAP";//o "SATELLITE" o "TERRAIN"
$zoom=12;//zoom della mappa
$lat=42.747012;//latitudine del punto
$lon=12.429198;//longitudine
$local="prova";
?>
<script type="text/javascript">
    var map;
   $(document).ready(function(){
      //prettyPrint();
      map = new GMaps({
        div: '#map',
        lat: <?php echo $lat;?>,
        lng: <?php echo $lon;?>,
        mapTypeId: google.maps.MapTypeId.<?php echo $tipo_map; ?>,
        zoom: <?php echo $zoom;?>
      });
      map.addMarker({
        lat: <?php echo $lat;?>,
        lng: <?php echo $lon;?>,
        title: '<?php echo $local;?>',
      });
    });
</script>
      <div id="map"></div><!--qui si visualizza la mappa che con altri div sistemerai come vuoi -->
</body>
</html>
@criric: l'unico dubbio: funziona con IE?
 
Con IE 11 funziona con le versioni precedenti non saprei ma non c'è niente di complicato, dovrebbe farcela anche microsoft
 
ciao
grazie, in effetti con le vecchie IE non funzia.
poi una curiosità: che differenza c'è tra il mio e il tuo js?


@marcoin, ora fra un po' ti do le indicazioni per il db
 
Nel mio js ho aggiunto una funzione che va a leggere il contenuto della lista delle città ne prende i parametri e aggiorna la mappa senza ricaricare la pagina
E' sufficiente aggiornare l'array php
 
ciao
intanto farei una tabella del tipo, chiamala come preferisci:
Codice:
id int(12) primaykey autoincrement
nome varchar(50) not null
lat (double)
lon (double)
poi se vuoi aggiungere dei campi vedi tu (es. zoom o tipo di mappa)
ecco uno schema:
PHP:
<?php
//dati di connessione al db
$stm=mysqli_query("SELECT id,nome FROM tabella ORDER BY nome");//estrai i dati per preparare il menu a tendina
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<select name="elenco">
<?php
while($riga=mysqli_fetch_assoc($stm)){
  echo "<option value=".$riga['id'].">".$riga['nome']."</option>";
}
?>
</select>
<!-- o con un js per inviare alla selezione sensa pulsante di submit-->
<input name="invia" type="submit" id="invia" value="invia">
</form>
<?php
if(isset($_POST['invia'])){
	$stm=mysqli_query("SELECT * FROM tabella WHERE id=".$_POST['elenco']);
	$lat=$riga['lat'];
	$lon=$riga['lon'];
	$nome=$riga['nome'];
}else{
	//qui scegli delle coordinate per quando si apre la pagina
	$lat=42.747012;
	$lon=12.429198;
	$nome="pinco pallo";
}
?>
<script type="text/javascript">
	var map;
   $(document).ready(function(){
      //prettyPrint();
      map = new GMaps({
        div: '#map',
		lat: <?php echo $lat;?>,
		lng: <?php echo $lon;?>,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		zoom: 13
      });
      map.addMarker({
        lat: <?php echo $lat;?>,
        lng: <?php echo $lon;?>,
        title: '<?php echo $nome;?>'
      });
    });
</script>
      <div id="map"></div>

poi metti i css e js che ti servono e ricorda di dare le dimensioni al div #map
guarda che ho messo solo la parte relativa al db e alla creazione della mappa

edit
@criric
si anche nel mio uso una chiamata ajax, ma non ho voluto complicare
 
Ultima modifica:
Ok allora il codice postato da criric funziona, mentre quello di borgo ancora non mi visualizza niente :( Poi volevo chiedere se invece appunto di averla così fissa la mappa posso averla diciamo "nascosta" e quando una persona clicca sulla mappa la faccio apparire affianco? In pratica il mio programma è questo:
HTML:
<form name="invio" method="GET" action="pagina.php">
Inserisci la città dei ristoranti <input type="text" name="luogo">
<input type=submit value=Invia>
Pagina.php
PHP:
<?php
$citta=$_POST['luogo']
//mi connetto al database
$id=mysql_connect("localhost","root","")
or die("non riesco a creare la connessione");
mysql_select_db("my_sassiesecoli")
or die("non trovo il db"); 
//estraggo tutti i ristoranti di quella città
$sql="SELECT * FROM ristoranti WHERE LOCALITA='$citta'";
$rs=mysql_query($sql) or die(mysql_error());
//metto i dati in una tabella

while($row=mysql_fetch_array($rs)) 
{ echo"<table border=0>";
echo"<tr><td>"."</tr></td>"//non ho scritto niente perchè qua vorrei metterci l'immagine del ristorante che in teoria dovrebbe essere un campo del db ma non so ne come si inserisce ne come si stampa una immagine dal db, quindi questa cosa devo studiarmela un attimo :)".$row['EVENTO']."</td>";
echo"<tr><td>";
echo"<table border=1>"; 
echo"<tr><td>"."<b>NOME</b>"."</td>";
echo"<td>".$row['NOME']."</td>";
echo"</tr>"
echo"<tr><td>"."<b>LOCALITA'</b>"."</td>";
echo"<td>".$row['LOCALITA']."</td>";
echo"</tr>"
echo"<tr><td>"."<b>VIA</b>"."</td>";
echo"<td>".$row['VIA']."</td>";
echo"</tr>"
echo"<tr><td>"."<b>TELEFONO</b>"."</td>";
echo"<td>".$row['TELEFONO']."</td>";
echo"</tr>"
echo"<tr><td>"."<b>MAPPA</b>"."</td>";
echo"<td><a href=mappa.php>".">Mappa<"."</a></td>"; 
echo"</tr>";
echo"</table>"
echo"</td>";
echo"</tr>";
echo"</table>";
echo"<br><br>";
//La tabella dovrebbe venire una cosa del genere http://sassiesecoli.altervista.org/provatabella.html e sarà ripetuta tante volte quanti sono i ristoranti che hanno la località scelta
}
Allora, presupponendo di non aver sbagliato niente ( invece avrò sbagliato tutto :) ), spero sia chiaro ciò che voglio fare... praticamente una persona poi cliccando su mappa vorrei che si aprisse la mappa di quel ristorante di cui sul db ho latitudine e longitudine, ma non so come fare. Il top sarebbe fare aprire la mappa di quel ristorante proprio affianco alla tabella, ma anche in un'altra pagina nuova ( che poi con una chiamata ajax farò aprire nel div in cui lavoro ) andrebbe benissimo. Inoltre se mi potete dare una mano con l'immagine ve ne sarei grato :)
 
Rettifico la tabella che ho postato che fa schifo con questa:
PHP:
<?php
$numcampi=mysql_num_fields($rs);
$nrighe=mysql_num_rows($rs);
echo "<table border=1><tr>";
for($j=0;$j<$numcampi;$j++)
 echo "<td>".mysql_field_name($rs,$j)."</td>";
 echo "</tr>";
 
for($i=0;$i<$nrighe;$i++)  
{echo"<tr>";
 for($j=0;$j<$numcampi;$j++)
 echo"<td>". mysql_result($rs,$i,$j)."</td>";
 echo"</tr>";
 }
 echo"</table>";

?>

In ogni caso ci vorrei aggiungere un campo image che vorrei prendere dal db e un campo link mappa che prenda le coordinate salvate sul db e faccia la mappa del ristorante. In alternativa faccio il contrario, cioè creo una lista come sul sito di borgo e premendo su un ristorante oltre a far uscire la mappa estraggo le informazioni con questa tabella dal db.. Però non so come fare..
 

Discussioni simili