как добавить еще один прослушиватель событий после добавления один раз ..? - PullRequest
0 голосов
/ 17 февраля 2010

Я новичок в Javascript, а также в Google Maps. моя задача:

  • , чтобы позволить пользователю добавить маркер на карту
  • отображение информационного окна, когда пользователь нажимает на маркер
  • отображать «Центр города Куала-Лумпур» в информационном окне, если маркер указывает на центр города Куала-Лумпур и «Неизвестное местоположение» для других мест.

Моя проблема в том, что я не могу даже отобразить информационное окно после добавления маркера. Могу ли я добавить новое событие в ту же функцию? код работает только для добавления маркера. Код ниже после того, как я отредактировал с Google Maps:

function 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();
}

функция createMarker (latlng) {

  var marker = new GMarker(latlng);
  GEvent.addListener(marker,"click", function() {
   marker.openInfoWindowHtml('Petronas Twin Tower');
        });
  return marker;
* *} Тысяча двадцать-один

заранее спасибо. Я ломаю голову почти 2 недели. :( Пожалуйста, помогите мне ...

1 Ответ

0 голосов
/ 20 февраля 2010

Не уверен, что вы пытаетесь сделать с помощью кода. Я предполагаю, что вы хотите, чтобы у пользователя был только один маркер на карте в любое время.

Я изменил код, чтобы он выглядел так:

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);
    }
});

Зачем вам нужно удалять обработчик событий щелчка при втором щелчке?

Приведенный выше код не отображает шарик на маркере, но по крайней мере маркер теперь удаляется, когда пользователь нажимает на него.

Не могли бы вы дать больше информации о том, что вы хотите сделать, и о точном поведении кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...