LoginSignup
3
3

More than 5 years have passed since last update.

leaflet.js FAQ

Last updated at Posted at 2015-04-02

自分用メモ。
JavaScriptよくわからないのであまり参考にならないと思います。

Q. アンダースコアがついてるメソッドとかプロパティはなに?

A. プライベートメソッド

アンダースコアがついてるメソッドはドキュメントには載らないっぽい。

Q. 自作したClassのClassを識別するには?

instanceof 演算子を使うっぽい

var a = new MyChildClass();
a instanceof MyChildClass; // true
a instanceof MyClass; // true

Q. 既存のClassを継承(extend)したクラスで継承元のclassのメソッドをオーバーライドするには

継承先のClassで普通にメソッドを実装して、実装したメソッドの中でクラス名.prototype.メソッド名を呼ぶ。
第1引数にthisを渡して、第2引数以降にメソッドの引数を渡す。

var MyChildClass = MyClass.extend({
    initialize: function () {
        MyClass.prototype.initialize.call(this, "Yo");
    },

    greet: function (name) {
        MyClass.prototype.greet.call(this, 'bro ' + name + '!');
    }
});

var a = new MyChildClass();
a.greet('Jason'); // alerts "Yo, bro Jason!"

Q. 自作ClassでもL.map()みたいなfactoryを使いたい

ドキュメントにfactoryって書いてあるけどfactoryパターンのfactoryかな。

new L.Map('map');  // こう書くべきところを
L.map('map');   // こう呼び出せる
L.map = function (id, options) {
    return new L.Map(id, options);
};

Q. Popupに画像を表示させると枠からはみ出す

leafletのコード追ってないので原因はよく理解してない(画像を描画するまで画像のwidthとheightがわからないのが原因だと思う)けど、2通りの解決方法がある。

  1. CSSでwidthとheightを指定する
var html = '<img src="" alt="" style="width:;height:" />';
var popup = L.popup().setContent(html);
  1. dom要素を生成してからsetContent()する
var html = '<img src="" alt="" />'
var divNode = document.createElement('DIV');
divNode.innerHTML = html;
var popup = L.popup().setContent(divNode);

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3