n° 185
Maggio/Giugno 2013
Maggio 19, 2013, 10:13:17 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1] 2   Vai giù
  Stampa  
Autore Discussione: (Google Maps) Inserimento di più Tooltips  (Letto 5650 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« inserita:: Febbraio 10, 2010, 05:52:02 pm »

Ciao,
ho bisogno di una mano vorrei inserire più di una Tooltips, una su ogni marker. Volevo sapere come potevo riuscire... Sono arrivato a visualizzare solo la prima.

Grazie Mille

Ho scritto questo codice:
-----------------------------------------------------------------------------------
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

 
<title>pippo</title>
<style type="text/css"> 
   html, body { margin:0; padding:0; width:500px; height:300px; } 
   body { background:#FFFFFF; color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; line-height:150%; text-align:center;} 
   #map { width:100%; height:100%; } 
   #tooltip { padding:10px; text-align:left; }   
   #tooltip p,  #tooltip img { float:left; display:inline; padding:0; margin:0 10px 0 0; } 
</style> 


<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
   var initialize = function() {
 
   var latlng = new google.maps.LatLng(42.745334,12.738430);
   var latlng1 = new google.maps.LatLng(41.745335,12.585651);
   var latlng2 = new google.maps.LatLng(45.745334,7.745334);
   var latlng3 = new google.maps.LatLng(42.745334,12.738430);
   var latlng4 = new google.maps.LatLng(42.745334,12.738430);
   var latlng5 = new google.maps.LatLng(42.745334,12.738430);
   var latlng6 = new google.maps.LatLng(42.745334,12.738430);
   
   var options = {
        zoom: 5,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
   };   
 
   var map = new google.maps.Map(document.getElementById('map'), options);
    
      
   var marker = new google.maps.Marker(
      {
           position: latlng,
           map: map,
           icon: 'logo_piccolo.png',
         flat: true
      }
   );      
   var marker1 = new google.maps.Marker(
      {
           position: latlng1,
           map: map,
           icon: 'logo_piccolo.png',
         flat: true
      }
   );
   var marker2 = new google.maps.Marker(
      {
           position: latlng2,
           map: map,
           icon: 'logo_piccolo.png',
         flat: true
      }
   );
   
   var tooltip = '<div id="tooltip">'+
            '<img src="spoleto.jpg" alt="Spoleto">'+
               '<p><strong>Comune di Spoleto</strong><br>'+
            'cap: 06049<br>'+
             'provincia: Perugia<br>'+
            'nazione. Italia</p>'+
             '</div>';
   

   var infowindow = new google.maps.InfoWindow({
      content: tooltip
   });
   
   google.maps.event.addListener(marker,'click', function() {
              infowindow.open(map,marker);
         });   
}
 
window.onload = initialize;
</script>


</head>
<body style="margin:0; padding:0;"> 
   <div id="map" style="width:500px; height:300px;">
   </div> 
</body> 
</html>
-------------------------------------------------------------------------------------
Registrato

Manuel
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #1 inserita:: Febbraio 11, 2010, 01:08:18 am »

Sembra codice delle vecchie API, hai visto le nuove sul sito di riferimento?

Ti visualizza solo il primo? Hai errori javascript?


Alessandro
Registrato
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #2 inserita:: Febbraio 11, 2010, 10:54:37 am »

Credo che sia il vecchio codice Api, si mi visualizza solo il primo e non gli altri. riesco ad inserire tutti i marker ma non riesco ad associarli alle tooltips. e non mi dà nessun errore...
Come potrei fare?
Registrato

Manuel
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #3 inserita:: Febbraio 11, 2010, 11:06:33 am »

Ieri (con le API attuali) ho buttato giù un esempio multi-marker.
Funziona perfettamente.

Ma non sono andato avanti mettendo i vari tootltip... forse ho del tempo oggi pomeriggio...
intanto qualcun'altro spero ti possa aiutare.

Nel codice postate crei 3 marker, ma poi crei un solo tooltip associato ad una unica infoWindow.
Se replichi questo codice per gli N marker?
   
Codice:
var tooltip = '<div id="tooltip">'+
            '<img src="spoleto.jpg" alt="Spoleto">'+
               '<p><strong>Comune di Spoleto</strong><br>'+
            'cap: 06049<br>'+
             'provincia: Perugia<br>'+
            'nazione. Italia</p>'+
             '</div>';
   

   var infowindow = new google.maps.InfoWindow({
      content: tooltip
   });
   
   google.maps.event.addListener(marker,'click', function() {
              infowindow.open(map,marker);
         });   

Hai omesso del codice?
Registrato
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #4 inserita:: Febbraio 11, 2010, 11:10:59 am »

no ho messo tutto il codice che ho dentro la pagina. ma dove posso prendere il codice? ma questo esempio è multi marker ma non con la possibilità di aggiungere i diversi tooltip. come potrei fare e se questa strada è quella giusta?
Registrato

Manuel
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #5 inserita:: Febbraio 11, 2010, 11:34:42 am »

scusa alex.75 dove posso trovare il codice da te menzionato?
Registrato

Manuel
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #6 inserita:: Febbraio 11, 2010, 03:11:51 pm »

Cercando Google Maps API dovresti arrivare qui: http://code.google.com/intl/it/apis/maps/

C'è tutto ciò che serve, dall'esempio base fino alle customizzazioni più spinte.

Se il sito viene pubblicato dovrebbe essere garantito il funzionamento della mappa solo previa registrazione della "map key".

Se attualmente in locale la mappa funziona è forse perchè Google lo permette per risorse locali anche senza chiave.
Ciò non è garantito, anzi non dovrebbe proprio funzionare, una volta pubblicata la pagina su un www.miosito.xxx o miosito.altervista.org od altro ancora.
Non voglio spaventarti, è solo una precisazione che magari ti occorrerà in futuro. Richiedere la chiave è questione di 5 minuti...

Puoi dare un'occhiata alle API, così prendi mano a cercare ciò che ti occorre e magari conosci funzionalità che nemmeno ti aspettavi.

Sarebbe bello avere una mappa di dimensioni "adeguate" alla dimensione dello spazio sfruttabile del browser dell'utente. Ma è un passo successivo.

Ciao
Registrato
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #7 inserita:: Febbraio 11, 2010, 05:53:23 pm »

si ho già avuto il la key, volevo sapere se dovevo continuare con questo codice ed implementarlo o rifare tutto?
io ho provato a rifare con quello nuovo prendendo esempio da quel sito ma non mi dà il risultato che è visibile. Mi visualizza la mappa ma ne i marcker che ne le tooltips.
Non riesco a trovare l'errore?
Help
-----------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>pila</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script src="http://maps.google.com/maps?file=api&v=2&key=abcdef" type="text/javascript"></script>
<script src="http://maps.gstatic.com/intl/it_ALL/mapfiles/193c/maps2.api/main.js" type="text/javascript"></script>
<style type="text/css" originalName="api.css">Foglio di stile CSS</style>
<script src="http://gmaps-utility-library.googlecode.com/svn/trunk/mapiconmaker/1.0/src/mapiconmaker.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
    var locations = {};
    function load() {
      var map = new GMap2(document.getElementById("map"));
      map.setMapType(G_SATELLITE_MAP);
      map.setCenter(new GLatLng(45.614495, 7.341861), 2);
      GDownloadUrl("markerdata.xml", function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers.getAttribute("name");
          var address = markers.getAttribute("address");
          var type = markers.getAttribute("type");
          var latlng = new GLatLng(parseFloat(markers.getAttribute("lat")),
          parseFloat(markers.getAttribute("lng")));
          var store = {latlng: latlng, name: name, address: address, type: type};
          var latlngHash = (latlng.lat().toFixed(6) + "" + latlng.lng().toFixed(6));
          latlngHash = latlngHash.replace(".","").replace(".", "").replace("-","");
          if (locations[latlngHash] == null) {
            locations[latlngHash] = []
          }
          locations[latlngHash].push(store);
        }
        for (var latlngHash in locations) {
          var stores = locations[latlngHash];
          if (stores.length > 1) {
            map.addOverlay(createClusteredMarker(stores));
          } else {
            map.addOverlay(createMarker(stores));
          }
         }
      });
    }
    function createMarker(stores) {
      var store = stores[0];
      var newIcon = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00ff00"});
      var marker = new GMarker(store.latlng, {icon: newIcon});
      var html = "<b>" + store.name + "</b> <br/>" + store.address;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
    function createClusteredMarker(stores) {
      var newIcon = MapIconMaker.createMarkerIcon({width: 44, height: 44, primaryColor: "#00ff00"});
      var marker = new GMarker(stores[0].latlng, {icon: newIcon});
      var html = "";
      for (var i = 0; i < stores.length; i++) {
        html += "<b>" + stores.name + "</b> <br/>" + stores.address + "<br/>";
      }
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
    //]]>
</script>
<script src="http://maps.gstatic.com/cat_js/intl/it_ALL/mapfiles/193c/maps2.api/%7Bmod_drag,mod_ctrapi%7D.js" type="text/javascript" charset="UTF-8" __e_="[object Object]"></script>
<script src="http://maps.gstatic.com/intl/it_ALL/mapfiles/193c/maps2.api/mod_apiiw.js" type="text/javascript" charset="UTF-8" __e_="[object Object]"></script>
<script src="http://maps.gstatic.com/intl/it_ALL/mapfiles/193c/maps2.api/mod_exdom.js" type="text/javascript" charset="UTF-8" __e_="[object Object]"></script>
</head>
<BODY style="FONT-FAMILY: Arial, sans serif" onunload=GUnload() onload=load()>
<div id="map" style="border-bottom: black 1px solid; position: relative; border-left: black 1px solid; background-color: #e5e3df; width: 600px; float: left; height: 500px; border-top: black 1px solid; border-right: black 1px solid;" __e_="[object Object]">
   <div style="position: absolute; width: 100%; height: 100%; overflow: hidden; top: 0px; left: 0px;">
      <div style="z-index: 0; position: absolute; top: 0px; cursor: url(http://maps.gstatic.com/intl/it_ALL/mapfiles/openhand_8_8.cur), default; left: 0px;" __e_="[object Object]">
         
                  
-------------------------------------------------------------------------------------------------
Registrato

Manuel
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #8 inserita:: Febbraio 11, 2010, 05:59:32 pm »

non riesco a mettere tutto il codice....volevo sapere se c'è un esempio da prendere spunto con quelle richieste...
Registrato

Manuel
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #9 inserita:: Febbraio 11, 2010, 07:23:24 pm »

Ho fatto una pagina "dove siamo" una decina di giorni fa ed era ancora la versione 2, pare proprio che sia rimasto indietro io... non tu.

Per postare del codice usa sempre gli appositi tag: [ code] ...codice... [/code ] (puoi usare il tasto apposito raffigurante il cancelletto #)

Purtroppo oggi non riesco ad aiutarti ... mi spiace.

Spero che tu stia usando firefox+firebug per sviluppare javascript, se così non fosse ti suggerisco caldamente di farlo (l'alternativa è piazzare ripetutamente degli alert() nel codice).

La strada è quella giusta, ma ti serve davvero prendere le coordinate da un XML?

Ciao
Registrato
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #10 inserita:: Febbraio 12, 2010, 10:36:36 am »

alex.75 io provo a implementare il primo codice e vediamo se riesco a visualizzare le altre tooltips.
Registrato

Manuel
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #11 inserita:: Febbraio 12, 2010, 08:23:55 pm »

Non riuscivo a visualizzare la mappa di test, dopo molti tentativi ho capito che il problema
era dato dal DOCTYPE che usavo (<!DOCTYPE PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">) in conflitto con width ed eight impostate al 100%.
Con quel DOCTYPE anche l'esempio base non funziona su IE (su Firefox funziona).
Alla fine ho trovato conferma nella richiesta 1333 (Issue 1333).

Inoltre è un pò che cerco di capire DOVE va usata la key sulla versione 3, funziona anche senza.
Infine sulla issue 1135 ho trovato questo:
Version 3 of the API does not require any keys and can be called like this
<script type="text/javascript" src="http://maps.google.com/maps/api/js?
sensor=false"></script>

Penso perchè anche se non più in beta queste API sono ancora sotto "Labs".

Provo a fare qualcosa multi-tooltip...
Registrato
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #12 inserita:: Febbraio 12, 2010, 09:39:34 pm »

Ti posto il mio esempio multi-infoWindow basato sull'esempio base delle API v3.
Serve includere jquery.min(imizzato).js 
(trovo più divertente imparare quest'ultimo che le API delle mappe!)

Codice:
<!--<!DOCTYPE PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">-->
<html>
<head>
<!--dall'esempio...-->
<meta name="viewport" content="initial-scale=5.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

<!--jQuery (non posso più farne a meno...)-->
<script type="text/javascript" src="JS/jquery.js"></script>
<!--<script type="text/javascript" src="JS/jquery.vsdoc.js"></script>--> <!-- comodo se usi Visual Studio, remove in release-->

<!--si comincia...-->
<script type="text/javascript">

//i miei dati:
var mapLatitude = 43.3429;
var mapLongitude = 12.8992;
var mapZoom = 10;

// usiamo JSON che è figo (e comodo)
var cityPoints =               
    [                                                                                       // le parentesi quadre definiscono un array
        { "lat": 42.745334, "lng":12.738430, text: "aaa"   },     // le parentesi graffe definiscono un oggetto
        { lat: 41.745335, lng:"12.585651", text: "mi sono perso"},         // nomi delle proprietà e degli oggetti possono essere racchiusi tra apici (singoli o doppi) oppure no
        { lat: '45.745334', lng: '7.745334', text: "Prova di testo molto lungo. Ancora del testo. aaaaaaaaaaa bbbbbbbbb cccccccc. Fine." },
        { 'lat': 42.745334, lng:12.738430, text: "Spoleto" },          // virgola finale che "aiuta" ad aggiungere record
    ];


function initialize() {
    var latlng = new google.maps.LatLng(cityPoints[0].lat, cityPoints[0].lng );
    var myOptions = {
        zoom: mapZoom,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP    // or ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    //... adesso metto i miei tooltip
    $(cityPoints).each(function() { addToMap(map, this); });
    return;
   
    // in  dettaglio
    $(cityPoints)                                                         // istanzio un oggeto jQuery da un ogegtto del DOM
    .each(                                                                   // questa funzione itera su tutti gli elementi e prende come parametro una funzione da applicare ad ognuno di essi
        function() { addToMap( map, this); }                 // la funzione applicata contiene la chiamata alla funzione "addToMap".
                                                                                // da notare che "this" è (in questo contesto) l'oggetto "frutto" dell'iterazione,
                                                                                // per avere un oggetto jQuery si deve usare $(this) (info utile per altre situazioni)
        );
   
}


function addToMap(map, point) {
    var html = "<div style=\"color:blue\"> \
    + point.text + \
    </div>";

    //alert("point: " + html);      solo per test

    // from http://code.google.com/intl/it/apis/maps/documentation/v3/overlays.html#Markers
    // create the marker
    var marker = new google.maps.Marker( {
        position: new google.maps.LatLng(point.lat, point.lng),
        map: map,
        title: point.text
    } );

    return;
    addInfo(map, marker, point);
   
}

// stesso link del marker ma un pò più sotto
function addInfo(map, marker, point) {

    var contentString = '<div id="content">' +
    '<div>' +
    '</div>' +
    '<h1 class="firstHeading">Info</h1>' +
    '<div id="bodyContent">' + /* '<div class="cityTitle">' + point.title + "</div>" + */    // aggiungere questa proprietà
    '<div class="cityText">' + point.text + '</div>' +
    '</div>' +
    '</div>';

    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });
   
}
     
</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

(La mappa funziona a dovere ma manca un marker all'appello!)

Ho solo fatto copia-icolla e messo insieme tre pezzi di codice degli esempi,
poi ho usato qualche funzione "moderna" del javascript,
ma se qualcosa non è chiaro chiedi pure.

Ciao
Registrato
alex.75
invioattach
Full Member
***

Karma: +14/-3
Scollegato Scollegato

Messaggi: 341



Mostra profilo WWW
« Risposta #13 inserita:: Febbraio 15, 2010, 11:22:47 am »

Ti segnalo questo:
http://marcgrabanski.com/pages/code/jquery-ui-google-maps

ciao
Registrato
mvp82
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 22


m.vasquez@hotmail.it
Mostra profilo
« Risposta #14 inserita:: Febbraio 15, 2010, 11:39:34 am »

ciao alex ho provato a copiare il tuo codice ma non funziona mi dà un errore non riesco a capire il marker che manca per vedere come adattarlo. Per quanto riguarda il link ke mi hai girato quella mappa esistono anche la versione senza pulsanti... Grazie mille per la disponibilità e la pazienza
Registrato

Manuel
Pagine: [1] 2   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page