Daha çox

Leaflet nəzarət hadisəsində cari qat əldə edirsiniz?


Mövcud qatı idarəetmə hadisəsində əldə edə bilərəmmi?

əgər (obj.overlay) {input = document.createElement ('giriş'); input.type = 'onay qutusu'; input.defaultChecked = yoxlanıldı; } başqa {input = this._createRadioElement ('broşura', yoxlanılır); } L.DomEvent.on (giriş, 'vurun', this._onInputClick, bu); _onInputClick: function (e) {var id = e. currentTarget; }

İstifadəçi onay qutusunu vurduqda, _onInputClick hadisəsini tetikler. Bu nəzarət vərəqə təbəqəsi altında yaradılacaqdır. Mövcud qatı əldə etmək istəyirəm. Məsələn, e.currentTarget kimi mövcud nəzarəti əldə edə bilərəm. Cari qatı Leaflet kitabxanası ilə əldə etmək mümkündürmü?


Məncə bir vərəqə nəzarəti qurursunuz L. Nəzarət Layerlər?

Bu halda, sadəcə saxlamaq üçün L.Control.Layers kimi oxşar bir sxemdən istifadə etməyə davam edə bilərsiniz, sonra müvafiq təbəqəyə bir istinad əldə edə bilərsiniz.

L.Control.Layers, giriş elementinin bir xüsusiyyəti olaraq yalnız təbəqənin leaflet_idini saxlayır: input.layerId = L.stamp (obj.layer);

Layers Control tərəfindən bilinən bütün təbəqələr (yəni anında və ya daha sonra əlavə olunuraddBaseLayervə yaaddOverlay) istinad edilirbu._layersobyekt.

Giriş klik hadisəsində Layers Control bütün girişləri dövr edir və müvafiq qatları (lər) alır: obj = this._layers [input.layerId];

Buna görə sizin vəziyyətinizdə, eyni sxemdən istifadə edirsinizsə, maraqlanan bütün təbəqələrə istinad edinbu._layers, girişin aid olduğu id əlavə edininput.layerId = L.stamp (qat), sonra bu id oxuyaraq və müvafiq istinad əldə edərək lazım olduqda onu əldə edin:

_onInputClick: function (hadisə) {var id = event.currentTarget.layerId; var layer = this._layers [id]; }

Bu köhnə bir mövzu ... amma bənzər bir problemə yaxşı bir cavab tapdım: https://stackoverflow.com/questions/33740996/how-to-get-the-baselayer-selected-in-leaflet

Vəziyyətim əsas təbəqələrlə işləyirdi, ancaq üst qat əlavə etmək və ya örtük silmək üçün hadisələrin cədvəlini hazırlamaq üçün qarmaqlar var. Buraya baxın: https://leafletjs.com/reference-1.6.0.html#map-overlayadd

Bir bazelayer dəyişikliyi hadisəsi baş verdiyi zaman layer_id-i qat nəzarətindən qaytaran iş kodum. Bu layer_id istifadə edərək hazırda hansı əsas qatın açıq olduğunu müəyyən edə bilərəm:

map.on ('baselayerchange', function (e) {currentLayerID = e.layer._leaflet_id; console.log (currentLayerID);});


Videoya baxın: Leaflet tutorial - Accessing Values from Database to display in Map (Oktyabr 2021).