Lagi

Bagaimana cara mendapatkan objek peta di acara?

Bagaimana cara mendapatkan objek peta di acara?


Saya menambahkan pendengar ke tombol

L.DomEvent .addListener(selectList, 'click', L.DomEvent.stopPropagation) .addListener(selectList, 'click', L.DomEvent.preventDefault) .addListener(selectList, 'click', this._onMarkerChange);

Dan kemudian saya ingin memindahkan peta dengan fungsi panto.

_onMarkerChange: function(){ this._handlingClick = true; for (var memilih ini) { if(this[opt].selected) { var lat = this[opt].getAttribute( "data-lat" ); var lon = this[opt].getAttribute( "data-lon" ); this.L.Map.panTo( L.LatLng baru( lat, lon ) ); merusak; } } this._handlingClick = false; },

Ada kesalahan --Uncaught ReferenceError: map is not defined Bagaimana saya harus melakukannya? meneruskan objek peta ke acara ini?


Jika Anda tidak menentukan argumen ke-4 di L.DomEvent.addListener ("konteks"), makainidi dalam panggilan balik Anda akan merujuk ke elemen DOM yang memicu acara, yaitu apa yang dirujuk olehpilihDaftardalam kode Anda.

Kemudianuntuk (var memilih ini)akan melewati semuapilihDaftarproperti DOM, danthis.L.Map.panToakan mengharapkan ituLdireferensikan sebagai properti daripilihDaftar. Saya juga tidak berpikir Anda dapat menggunakannya apa adanya.

Sekarang jika Anda luluspetasebagai argumen ke-4,iniakan merujuknya. Anda masih dapat mengakses elemen DOM Anda dengan mengambil argumenperistiwadengan panggilan balik Anda dan mencariacara.target saat ini.

this._onMarkerChange = function (event) { var dataset = event.currentTarget.dataset; var lat = parseFloat(dataset.lat); var lon = parseFloat(dataset.lon); this.panTo( new L.LatLng( lat, lon ) ); } L.DomEvent .addListener(selectList, 'click', L.DomEvent.stopPropagation) .addListener(selectList, 'click', L.DomEvent.preventDefault) .addListener(selectList, 'click', this._onMarkerChange, peta); // map sebagai argumen ke-4 akan menjadi konteks (ini) dalam panggilan balik.

Demo: http://jsfiddle.net/ve2huzxw/49/

Saya tidak yakin tentang objek apa yang ingin Anda rujuk dengan menggunakaninidalam panggilan balik Anda (_onMarkerChange). Seperti yang dikatakan di atas,iniakan merujuk ke elemen DOM (pilihDaftar) jika Anda tidak menentukan argumen ke-4 diL.DomEvent.addListener, atau ke objek apa pun yang Anda berikan sebagai argumen ke-4.