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

    Problema con ciclo for e Infowindow

    Salve ragazzi... è un problema che proprio non riesco a risolvere.
    Ho cercato tantissimo sul forum e nel web ma non ho trovato soluzione!
    praticamente ho un array cui sono presenti le coordinate per ogni marker e poi un link che dovrà apparire nel contenuto dell'infowindow (il fumetto quando si clicca sul marker). Purtroppo però ogni volta che clicco su un marker (qualsiasi esso sia) si apre un infowindow ma con all'interno il link corrispondere all'ultimo elemento dell'array processato... Guardate:



    codice:
     
    
    var map;
    var infoWindow;
    var image= new google.maps.MarkerImage("http://www.miosito.com", new google.maps.Size(3, 3),new google.maps.Point(0,0) ,new google.maps.Point(3,3));
    
    var myZone = [
    [1,-39,-35,175,180,"http://www.miosito.com/1"],
    [2,-39,-35,-180,-178,"http://www.miosito.com/2"],
    [3,-42,-39,173,180,"http://www.miosito.com/3"],
    [4,-42,-39,-180,-179,"http://www.miosito.com/4"],
    [5,-43,-41,170,173,"http://www.miosito.com/5"]
    ];
    
    function initialize() {
    //-> scripts per personalizzare la mappa
    var mapDiv = document.getElementById('map_canvas');
    var myOptions = {
    zoom: 2,
    center: new google.maps.LatLng(0.0, 0.0),
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    mapTypeControl: true,
    mapTypeControlOptions: {
    style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
    position: google.maps.ControlPosition.TOP_CENTER
    },
    panControl: true,
    panControlOptions: {
    position: google.maps.ControlPosition.TOP_RIGHT
    },
    zoomControl: true,
    zoomControlOptions: {
    style: google.maps.ZoomControlStyle.LARGE,
    position: google.maps.ControlPosition.TOP_RIGHT
    },
    scaleControl: true,
    scaleControlOptions: {
    position: google.maps.ControlPosition.TOP_CENTER
    }
    };
    
    map = new google.maps.Map(mapDiv, myOptions);
    //infoWindow = new google.maps.InfoWindow();
    
    addmarker();
    }
    
    
    // PARTE IMPORTANTE !!!!!!!!!!!!!!
    
    function addmarker(){
    for (var i = 0; i < myZone.length ; i++) {
    var myZ= myZone[i];
    
    var y1=(myZ[1]);
    var y2=(myZ[2]);
    var x1=(myZ[3]);
    var x2=(myZ[4]);
    var linkZone=(myZ[5]);
    var numZone= (myZ[0]);
    var lati = ((y1+y2)/2);
    var longi = ((x1+x2)/2);
    var punto = new google.maps.LatLng(lati,longi);
    var marker = new google.maps.Marker({
          position: punto,
          title: "Link to Zone",
       map: map,
       icon: image
     });
     var infoWindow = new google.maps.InfoWindow ( {
        content: "Link <a href="+linkZone+">Zone" +numZone +"</a>" } );
        
        google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setPosition(punto);
        infoWindow.open(map, this);
        }); 
     
    }
    }
    google.maps.event.addDomListener(window, 'load', initialize);


    QUINDI qualsiasi marker io clicchi, nel fumetto appare scritto :


    LINK ZONE 5



    il perché l'ho capito...... ma non capisco come risolvere il problema (((
    Ultima modifica di Rodrigoson6; 24-03-2014 a 17:30

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    codice:
    var marker = new google.maps.Marker({
          position: punto,
          title: "Link to Zone",
          map: map,
          linkZone: linkZone,
          numZone: numZone
     });
        
        google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent("Link <a href="+this.linkZone+">Zone" +this.numZone +"</a>");
        infoWindow.open(map, this);
        });
    L'oggetto infoWindow va dichiarato fuori dalla funzione come variabile globale o cmq fuori dal ciclo una sola volta, inoltre è inutile settare la posizione della infoWindow in quanto è associata al marker e verrà mostrata sopra di esso.

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.