2016-09-25 9 views
2

リーフレットマップビューア用のプラグインを開発しようとしています。私はオプションのプロパティリストを持つクラスを持っていますが、私はそれらのフォームにアクセスしようとすると、このキーワークを使ってメソッドonAddが動作していません。このキーワードを使用するメソッドからのアクセスクラスのプロパティ

L.btsControl = L.Control.extend({ 
options: { 
    position: 'topright', 
    //control position - allowed: 'topleft', 'topright', 
    //'bottomleft', 'bottomright' 
    minValue: 'isss', 
    min: 0, 
    max: 1, 
    maxValue: '', 
}, 

initialize: function (options) { 
    L.Util.setOptions(this, options); 
}, 

onAdd: function (map) { 
    this._map = map; 
    this._map.eachLayer(function (layer){ 
     if (layer.options.time_i > this.options.max) { 
      this.options.maxValue = layer.options.time; 
     } 
     if (layer.options.time_i < this.options.min) { 
      this.options.minValue = layer.options.time; 
     } 
    }); 

//SKIPED CODE 

    return container; 
}, 

したがって、onAddメソッドから最小および最大プロパティにアクセスするにはどうすればよいですか?今、私は

"TypeError: this.options is undefined"

を得ている呼び出し元の関数である:あなたが.eachLayer()に提供var mycontrol = new L.btsControl().addTo(map);

+0

私は質問を編集します – Bungow

+0

投稿とタイトルをスペルチェックしてください。 –

答えて

1

コールバック関数は、必要なコンテキストを持っていません。あなたのthisにその機能を結合することによってこの問題を解決することができます:

this._map.eachLayer(function (layer){ 
    if (layer.options.time_i > this.options.max) { 
     this.options.maxValue = layer.options.time; 
    } 
    if (layer.options.time_i < this.options.min) { 
     this.options.minValue = layer.options.time; 
    } 
}.bind(this)); 

How does the this keyword workを参照してください。

関連する問題