एक और समाधान (और शायद क्लीनर) 4 प्रदान किए गए कोनों के अलावा अतिरिक्त नियंत्रण प्लेसहोल्डर बनाने के लिए होगा।
एक अच्छा फायदा यह है कि यह उन प्लेसहोल्डर्स में से कई में कई नियंत्रण डालने की अनुमति देता है। वे मानक कोनों में, ओवरलैपिंग के बिना ढेर होंगे।
जावास्क्रिप्ट:
// Create additional Control placeholders
function addControlPlaceholders(map) {
var corners = map._controlCorners,
l = 'leaflet-',
container = map._controlContainer;
function createCorner(vSide, hSide) {
var className = l + vSide + ' ' + l + hSide;
corners[vSide + hSide] = L.DomUtil.create('div', className, container);
}
createCorner('verticalcenter', 'left');
createCorner('verticalcenter', 'right');
}
addControlPlaceholders(map);
// Change the position of the Zoom Control to a newly created placeholder.
map.zoomControl.setPosition('verticalcenterright');
// You can also put other controls in the same placeholder.
L.control.scale({position: 'verticalcenterright'}).addTo(map);
तो यह आसान स्टाइल सीएसएस के साथ उन लोगों प्लेसहोल्डर, हो जाता है, क्योंकि उनके माता-पिता डोम नक्शा कंटेनर ही है। इसलिए top
, bottom
, left
और right
प्रतिशत के साथ निर्दिष्ट किया जा सकता है (जो माता-पिता के आयामों का उपयोग करते हैं)।
सीएसएस:
.leaflet-verticalcenter {
position: absolute;
top: 50%; /* possible because the placeholder's parent is the map */
transform: translateY(-50%); /* using the CSS3 Transform technique */
padding-top: 10px;
}
.leaflet-verticalcenter .leaflet-control {
margin-bottom: 10px;
}
vertical centering प्लेसहोल्डर खुद के लिए के रूप में, आप अपने पसंदीदा तकनीक का उपयोग कर सकते हैं। यहां मैंने प्लेसहोल्डर को अपनी ऊंचाई के आधे से ऑफसेट करने के लिए CSS3 ट्रांसफ़ॉर्म का उपयोग किया था।
यदि आवश्यक हो (उदाहरण के लिए पुराने ब्राउज़र संगतता के लिए), तो आप iH8 के समान इस ऑफ़सेट को करने के लिए "गणना-ऑन-लोड" विधि का उपयोग कर सकते हैं। लेकिन अब आपको प्लेसहोल्डर को नया नियंत्रण जोड़ने पर, मानचित्र आकार बदलने पर इसे चलाने की आवश्यकता नहीं है।
डेमो: http://jsfiddle.net/ve2huzxw/8/
पत्रक 1.0.3 के लिए, मुझे सीएसएस में लीफलेट-वर्टिकल सेंटर के लिए लाइन 'z-index: 1000;' शामिल करने की आवश्यकता है। अन्यथा, मैं नियंत्रण पर क्लिक कर सकता था लेकिन यह दिखाई नहीं दे रहा था। डेमो: http://jsfiddle.net/ve2huzxw/437/ – user2441511