दस्तावेज़ीकरण / मूल बातें / Raster Layer

रेस्टर लेयर

XYZ टाइल के URL टेम्पलेट निर्दिष्ट करके, किसी भी टाइल सेट को मानचित्र पर ओवरले करता है। भौगोलिक सर्वेक्षण टाइल आदि बाहरी टाइल को यथावत उपयोग किया जा सकता है।

ANDROID
com.mapconductor:core
iOS
MapConductorCore
REACT
@mapconductor/js-sdk-react
प्लेटफ़ॉर्म

01 · उपयोग

स्रोत में URL टेम्पलेट पास करना ही काफी है। पारदर्शिता और ज़ूम रेंज लेयर के तरफ से नियंत्रित होते हैं।

RasterLayerScreen.kt · Jetpack Compose
val rasterLayerState = RasterLayerState(
    id = "gsi-raster",
    source = RasterLayerSource.UrlTemplate(
        template = "https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png",
        tileSize = 256,
        minZoom = 5,
        maxZoom = 15,
    ),
    opacity = 0.75f,
)

MapLibreMapView(state = mapState) {
    RasterLayer(rasterLayerState)
}

02 · मुख्य विकल्प

Option
Default
विवरण
template
{z}/{x}/{y} युक्त टाइल का URL टेम्पलेट।
tileSize
512
टाइल की एक भुजा के पिक्सेल की संख्या।
minZoom / maxZoom
कोई नहीं
लेयर को प्रदर्शित करने के लिए ज़ूम रेंज। यदि निर्दिष्ट नहीं है, तो सभी ज़ूम स्तरों पर प्रदर्शित करता है।
attributionRules
[]
ज़ूम और रेंज के अनुसार आभार नियम। source में निर्दिष्ट करता है।
opacity
1.0
पूरे लेयर की अस्पष्टता (लेयर की ओर से निर्दिष्ट)।
visible
true
प्रदर्शन/गैर-प्रदर्शन टॉगल।
zIndex
0
अन्य लेयर्स के साथ ओवरलैप क्रम।
userAgent
MapConductor/…
टाइल प्राप्त करते समय User-Agent। संगतता प्रदाता पर निर्भर करती है (नीचे तालिका)।
extraHeaders
कोई नहीं
टाइल प्राप्त करते समय जोड़ने के लिए अतिरिक्त हेडर। प्रमाणीकरण टोकन आदि। संगतता प्रदाता पर निर्भर करती है (नीचे तालिका)।

03 · हेडर की संगतता

टाइल प्राप्त करने का काम प्रत्येक प्रदाता के मानचित्र SDK द्वारा किया जाता है, और अनुरोध को बदलने का कोई तरीका है या नहीं, यह SDK पर निर्भर है। जिन प्रदाताओं के पास यह तरीका नहीं है, वहां निर्दिष्ट किया गया मान अनदेखा किया जाता है और रनटाइम पर लॉग आता है। नीचे दी गई तालिका वास्तव में टाइल अनुरोध प्राप्त करके पुष्टि किए गए परिणाम हैं (नेटिव के लिए वास्तविक डिवाइस, Web के लिए ब्राउज़र)।

Web में userAgent किसी भी प्रदाता पर काम नहीं करता। ऐसा इसलिए है क्योंकि ब्राउज़र User-Agent को ओवरराइड करने की अनुमति नहीं देता, और SDK की तरफ से इसे बायपास करने का कोई तरीका नहीं है। स्वयं प्रॉपर्टी को React Native के लिए रखा गया है, जहां RN में यह मान नेटिव SDK को पास होता है और वास्तव में काम करता है। यह एक ही कोड को Web और RN दोनों पर चलाने के लिए एक जानबूझकर किया गया डिज़ाइन है।

Provider
iOS
Android
Web(extraHeaders)
टिप्पणी
MapLibre
iOS MLNNetworkConfiguration, Android OkHttp क्लाइंट की अदला-बदली, और Web maplibre-gl के transformRequest के माध्यम से। ये सभी केवल टाइल वितरण होस्ट को भेजे गए अनुरोधों में शामिल होते हैं।
MapTiler
iOS में MapLibre के समान तंत्र है। Android का MapTiler SDK WebView पर चलता है, इसलिए नेटिव तरफ से हेडर को बदला नहीं जा सकता।
MapKit
यह iOS के लिए विशिष्ट प्रदाता है।
HERE
iOS तभी स्थानीय प्रॉक्सी के माध्यम से जाता है जब हेडर निर्दिष्ट हो (एक हॉप बढ़ जाता है)।
Google Maps
userAgent
Android स्वयं टाइल प्राप्त करता है, इसलिए दोनों का उपयोग किया जा सकता है। iOS का GMSURLTileLayer केवल userAgent प्रकट करता है, extraHeaders अनदेखा कर दिए जाते हैं।
Mapbox
iOS / Android के SDK में अनुरोध को फिर से लिखने के लिए कोई सार्वजनिक API नहीं है। Web के mapbox-gl में transformRequest होने के कारण, यह केवल Web के लिए समर्थित है।
ArcGIS
ऊपर वही।
TomTom
ऊपर वही।
Longdo
ऊपर वही।
Leaflet
केवल Web के लिए। केवल तभी जब हेडर निर्दिष्ट हो, तो fetch के साथ टाइल लेता है और इसे blob से बदल देता है।
OpenLayers
केवल Web के लिए। ऊपर वही (tileLoadFunction को बदलना)।
Azure Maps
केवल Web के लिए। transformRequest के माध्यम से।
Cesium
✓ (मापा नहीं गया)
केवल Web के लिए। headers वाला Resource पास करने का कार्यान्वयन है, लेकिन सैंपल ऐप की दूसरी खराबी के कारण इसका वास्तविक परीक्षण नहीं किया जा सका है।

यदि आप हेडर आवश्यक वाले टाइल सर्वर का उपयोग कर रहे हैं, तो कृपया एक समर्थित प्रदाता चुनें। गैर-समर्थित प्रदाताओं के लिए भी, यदि URL के क्वेरी पैरामीटर में टोकन शामिल करने की विधि है, तो आप इसका उपयोग कर सकते हैं।

04 · सैंपल

भौगोलिक सर्वेक्षण संस्थान टाइल का उदाहरण

सैंपल में राहत मानचित्र और मानक मानचित्र के बीच स्विच किया जाता है और स्लाइडर के साथ पारदर्शिता बदली जाती है। स्रोत नोटेशन attributionRules द्वारा स्वचालित रूप से बदल जाता है।

वीडियो में दिखाया गया कार्यान्वयन · Android + MapLibreKotlin · Jetpack Compose
var opacity by remember { mutableFloatStateOf(0.75f) }
var relief by remember { mutableStateOf(true) }

val layerState = remember { RasterLayerState(id = "gsi-raster") }

// Both source and opacity can be reassigned; the layer is not rebuilt
LaunchedEffect(relief, opacity) {
    layerState.source = RasterLayerSource.UrlTemplate(
        template = if (relief) {
            "https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png"
        } else {
            "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png"
        },
        tileSize = 256,
        minZoom = 5,
        maxZoom = 15,
    )
    layerState.opacity = opacity
}

MapLibreMapView(state = mapViewState) {
    RasterLayer(layerState)
}

Slider(value = opacity, onValueChange = { opacity = it })
Switch(checked = relief, onCheckedChange = { relief = it })
सैंपल वीडियो · रास्टर टाइल को ओवरले करना
वीडियो अभी नहीं बनाबाहरी टाइल सर्वर को ओवरले करना, और ज़ूम के साथ टाइल बदलते हुए दिखाई देते हैं।

संबंधित पेज