การตั้งค่าเลเยอร์ที่เลือกบน Leaflet/Mapbox L.Control.Layers

ฉันมีแผนที่มีชั้นฐานอยู่สองสามชั้น ผู้ใช้สามารถเลือกเลเยอร์ฐานแล้วบันทึกแผนที่ได้ หลังจากบันทึกแผนที่ ระบบจะโหลดแผนที่ด้วยเลเยอร์ฐานใหม่ ควรเลือกเลเยอร์ฐานนั้นในตัวควบคุม L.Control.Layers อย่างไรก็ตาม ไม่มีวิธีใดใน API เพื่อเลือกชั้นฐาน

ใครรู้วิธีแก้ไขปัญหานี้หรือมีปลั๊กอินอื่นหรือไม่


อัปเดต: นี่คือรหัสที่ฉันใช้ MapConfigs มีรหัสใน MapBox และสามารถสร้างแผนที่ที่ L.control.layers ต้องการได้

var map = L.mapbox.map( components.mapDivId , MapConfigs.idFor(baseLayerName) );    
map.addControl( L.control.layers(
    MapConfigs.toBaseLayersControlMap(map)
).setPosition("topright"));

ขอบคุณ!


person Michael Bar-Sinai    schedule 07.05.2015    source แหล่งที่มา


คำตอบ (1)


ทำไมไม่จัดเก็บการอ้างอิงไปยังชั้นฐานทั้งหมดที่มีอยู่ในแฮช แล้วใช้ addLayer หรือ removeLayer (http://leafletjs.com/reference.html#map-addlayer) เท่าที่จำเป็นในการเลือกเลเยอร์ฐานโดยทางโปรแกรมหรือไม่ บางอย่างเช่นด้านล่าง

var tileLayers = {light: L.tileLayer('lightUrl'),dark: L.tileLayer('darkUrl')}
person snkashis    schedule 08.05.2015
comment
ขอบคุณ - แต่นั่นไม่รวม UI และการนำไปใช้สำหรับอินเทอร์เฟซ IControl หากไม่มีปลั๊กอินที่ใช้งานอยู่แล้ว วิธีที่คุณเสนอก็คงเป็นหนทางไป - person Michael Bar-Sinai; 09.05.2015
comment
ไม่จำเป็นต้องมีปลั๊กอินสำหรับการควบคุม เนื่องจากมีอยู่แล้วในแกนหลัก เริ่มต้นแผนที่ด้วย var map = L.map 'map', {zoomControl:false} จากนั้นเริ่มต้นการควบคุมเลเยอร์ด้วย var layersControl = new L.Control.Layers(tileLayers) จากนั้น map.addControl(layersControl) - person snkashis; 10.05.2015
comment
ขอบคุณ @snkashis - แต่มันใช้งานไม่ได้ ... การควบคุมเลเยอร์ที่เพิ่มเข้ามามีการทำเครื่องหมายเลเยอร์แรกแม้ว่าจะไม่ใช่เลเยอร์ฐานที่ใช้งานอยู่ในแผนที่ก็ตาม - person Michael Bar-Sinai; 10.05.2015
comment
เป็นไปได้ไหมที่คุณจะโพสต์โค้ดบางส่วนของคุณที่นี่เพื่อให้เราดูโฟลว์ตามที่คุณมี - person snkashis; 11.05.2015