2013-04-23 5 views
1

Я модернизируюсь с Google Maps V2 на V3. Я придерживаюсь этой функциональности. Добавляя прослушиватель событий, я должен передать этот объект функции. Я не могу этого.Как получить доступ к этому объекту в событиях Google Maps

Пример:

Namespace.mapWrapper.prototype.enableZoneDraw = function(callback) { 
    if (!this.isDrawing) { 
     //this.clickListener = GEvent.bind(this.api, 'click', this, this.toggleZoneDraw); 
     this.clickListener = google.maps.event.addListener(this.api, 'click', this.toggleZoneDraw); //this.api is map object 
     if (callback) { 
      this.drawEndCallback = callback; 
     } 
    } 
} 

Namespace.mapWrapper.prototype.toggleZoneDraw = function(event) { 
    // Start drawing zone 
    if (!this.isDrawing) { 
     if(event.latLng){ 
      this.zoneCenter = event.latLng; 
      this.isDrawing = true; 
      this.drawListener = google.maps.event.addListener(this.api, 'mousemove', another_function); 
     } 
    } else { 
     this.isDrawing = false; 
     google.maps.event.removeListener(this.drawListener); 
     google.maps.event.removeListener(this.clickListener); 
    } 
} 

Я хочу, чтобы получить доступ к дополнительному объекту enableZoneDraw в toggleZoneDraw, но в toggleZoneDraw Если я получить доступ к этому объекту, то обратитесь к новому объекту.

Пожалуйста, помогите.

Благодаря

ответ

0
Namespace.mapWrapper.prototype.enableZoneDraw = function(callback) { 
    if (!this.isDrawing) { 
     //create a reference to the current this object 
     var obj = this; 
     this.clickListener = google.maps.event.addListener(
      this.api, //this.api is map object 
      'click', 
      //use a closure to maintain our reference to this object 
      function (evt) { 
       obj.toggleZoneDraw(evt); 
      } 
     ); 
     if (callback) { 
      this.drawEndCallback = callback; 
     } 
    } 
} 
Смежные вопросы