Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Google Maps API v3 - Visualizzare markers e infowindow da database MySQL

    Problema: visualizzare una serie di markers in Gmaps estratti da database MySQL.

    La tabella del database (nome: 'website') ha i seguenti campi:
    id, id_utente (fk), nome, indirizzo, latitudine, longitudine

    Come si può facilmente intuire, per ogni negozio online memorizzo il nome e la sua posizione (indirizzo e coordinate) fisica.

    Il mio intento è quello di visualizzare una mappa a schermo intero e visualizzare tutti i negozi attraverso dei markers. Poi, se si clicca su un marker deve comparire una infowindow contente le informazioni del negozio (nome e indirizzo).

    Il codice che ho sviluppato è il seguente. Il problema è che mi crea i marker per tutti i negozi, pero non mi crea le infowindow per i marker.

    Codice PHP:
    <body>
    <div id="map_full">
                
    <script> // script per Google Maps
                        
    function visualizza_mappa() {
    // ... [visualizzazione mappa nel div "map_full"]
    // Centriamo la mappa sulle coordinate di Napoli

        var map = new google.maps.Map(document.getElementById('map_full'), options);

    <?php
        
    // Recupero le informazioni su tutti i siti segnalati
        
    $query_siti mysql_query("SELECT * FROM website") or die (mysql_error());
                    
        
    // Verifichiamo che siano presenti records
        
    if (mysql_num_rows($query_siti) > 0) {
                    
            
    //se la tabella contiene records mostriamo tutti i siti attraverso un ciclo
            
    while ($riga_sito mysql_fetch_array($query_siti)) {
                        
            
    // Recuperiamo varie informazioni
            
    $id_sito $riga_sito['id'];
            
    $nome_sito stripslashes($riga_sito['nome']);
            
    $latitudine $riga_sito['latitudine'];
            
    $longitudine $riga_sito['longitudine'];
        
    ?>
                                        
            var siteLatLng = new google.maps.LatLng(<?php echo $latitudine ?>,<?php echo $longitudine?>);
            var marker = new google.maps.Marker({
                position: siteLatLng,
                map: map,
                title: "Prova"
            });
                                    
            var infowindow2 = new google.maps.InfoWindow({
                content: 'Prova'
            });
                                    
                  // Adding a click event to the marker
            google.maps.event.addListener(marker, 'click', function() {
                // Opening the InfoWindow
                infowindow2.setPosition(siteLatLng);
                infowindow2.open(map, marker);
            });
                                    

                                
            <?php
            
    }

        }
    ?>
    </body>

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Sto facendo la stessa cosa, posto direttamente il codice che si trova all'interno del ciclo while con i dati estratti dal database.

    A me si aprono le infwindow con i dati differenti relativi ad ogni marker, purtroppo le coordinate della infowindow corrrispondono a quelle dell'ultimo record, quindi si aprono su un marker diverso da quello cliccato.

    Codice PHP:
    echo '

    var siteLatLng = new google.maps.LatLng('
    .$dati['latitudine'].','.$dati['longitudine'].') ; 

    var marker = new google.maps.Marker({
    position: siteLatLng,
    map: mappa, 
    }); 

    var infowindow'
    .$dati['id'].' = new google.maps.InfoWindow({ content:\'Prova\' }); 

    google.maps.event.addListener(marker, \'click\', function() {
      infowindow'
    .$dati['id'].'.setPosition(siteLatLng); 
      infowindow'
    .$dati['id'].'.open(mappa,marker);
    });


    Errare humanum est, perseverare ovest

  3. #3
    Forse ho risolto. Riporto la porzione di codice "incriminata". Sto ancora testandola.

    Codice PHP:
    // Definiamo le coordinate del website corrente
    var siteLatLng = new google.maps.LatLng(<?php echo $latitudine ?>,<?php echo $longitudine?>);

    // Creiamo un marcatore
    var marker = new google.maps.Marker({
        position: siteLatLng,
        map: map,
        title: "<?php echo $nome_sito ?>"
    });

    // Creiamo la infowindow
    var infowindow2 = new google.maps.InfoWindow();
          
    // Poniamoci in attesa dell'evento 'click' sull'oggetto 'marker'
    google.maps.event.addListener(marker, 'click', function() {
        // Settiamo la posizione della infowindow e il suo contenuto per poi aprirla nella posizione corrente
        infowindow2.setPosition(siteLatLng);
        infowindow2.setContent("<?php echo "Attività

    [url='siti_visual.php?id=
    $id_sito']$nome_sito[/url]?>");
        infowindow2.open(map, this); //This è un puntatore all'oggetto con cui stiamo lavorando.
    });

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Perfetto Grazie!!!

    Codice PHP:
    echo '

    var siteLatLng = new google.maps.LatLng('
    .$dati['latitudine'].','.$dati['longitudine'].') ; 

    var marker = new google.maps.Marker({
    position: siteLatLng,
    map: mappa, 
    }); 

    var infowindow'
    .$dati['id'].' = new google.maps.InfoWindow({ content:\'Prova\' }); 

    google.maps.event.addListener(marker, \'click\', function() {
      infowindow'
    .$dati['id'].'.setPosition(siteLatLng); 
      infowindow'
    .$dati['id'].'.open(mappa,this);
    });


    Errare humanum est, perseverare ovest

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.