2010-02-17 5 views
0

Je suis nouveau sur Javascript et sur Google Maps. ma tâche est:comment ajouter un autre écouteur d'événement après avoir ajouté une fois ..?

  • pour permettre à l'utilisateur d'ajouter marqueur sur la carte
  • afficher une fenêtre d'information lorsque l'utilisateur clique sur le marqueur
  • affichage « Kuala Lumpur City Center » dans la fenêtre d'information si le marqueur pointant vers le centre-ville de Kuala Lumpur et «emplacement inconnu» pour d'autres endroits.

Mon problème est que je ne peux même pas afficher une fenêtre d'information après l'ajout du marqueur. Puis-je ajouter un nouvel événement dans la même fonction? le code ne fonctionne que pour ajouter le marqueur. Le code ci-dessous après avoir édité des cartes google:

fonction MyApplication() {

this.counter = 0; 
this.map = new GMap2(document.getElementById("map_canvas")); 
    this.map.setCenter(new GLatLng(3.145423,101.696883), 13); 
    var myEventListener = GEvent.bind(this.map, "click", this, function(overlay, latlng) { 
    if (this.counter == 0) { 
     if (latlng) { 
     this.map.addOverlay(new GMarker(latlng)) 
     this.counter++; 
     } else if (overlay instanceof GMarker) { 
      //This code is never executed as the event listener is 
      //removed the second time this event is triggered 
     this.removeOverlay(marker) 
     } 
    } else { 
     GEvent.removeListener(myEventListener); 
} 
}); 

}

function initialize() { 
var application = new MyApplication(); 
} 

fonction createMarker (latlng) {

var marker = new GMarker(latlng); 
    GEvent.addListener(marker,"click", function() { 
    marker.openInfoWindowHtml('Petronas Twin Tower'); 
     }); 
    return marker; 

}

merci d'avance. Je me suis cassé la tête pendant presque 2 semaines. :(s'il vous plaît aidez-moi ...

Répondre

0

Je ne sais pas ce que vous essayez d'accomplir avec le code. Je suppose que vous voulez que l'utilisateur d'avoir seulement 1 marqueur sur la carte à

une 1 fois. Je changé le code pour ressembler à ceci:

map=new GMap2(document.getElementById("googleMap")); 
map.setCenter(new GLatLng(3.145423,101.696883),13); 

var myEventListener = GEvent.bind(map,"click",this,function(overlay,latlng) { 

    // remove any markers from the map each time the user clicks on the map. This makes sure 
    // the user can only have 1 marker on the map at any 1 time 
    map.clearOverlays(); 

    var marker = null; 

    if(latlng) { 
     marker = new GMarker(latlng); 
     map.addOverlay(marker); 
    } else if(overlay instanceof GMarker) { 
     //This code is now executed 
     if (marker) 
      map.removeOverlay(marker); 
    } 
}); 

Pourquoi avez-vous besoin d'enlever le gestionnaire d'événements, cliquez sur le second clic

le code ci-dessus n'affiche pas le ballon sur le terrain, mais au moins? le marqueur est maintenant supprimé lorsque l'utilisateur clique dessus.

Pourriez-vous donner plus d'informations sur ce que vous voulez faire et sur le comportement exact du code?

Questions connexes