Skjölun / Grunnatriði / Rasterlag

Rasterlag

Leggðu hvaða XYZ-flísasafn sem er yfir kortið með því að gefa vefslóðarsniðmát — utanaðkomandi flísar á borð við GSI-kort Japans virka óbreyttar.

ANDROID
com.mapconductor:core
iOS
MapConductorCore
REACT
@mapconductor/js-sdk-react
Vettvangur

01 · Notkun

Gefðu vefslóðarsniðmát sem uppsprettu. Ógegnsæi og aðdráttarsvið eru stýrð á laginu.

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 · Valkostir

Option
Default
Lýsing
template
Vefslóðarsniðmát flísa sem inniheldur {z}/{x}/{y}.
tileSize
512
Kantlengd flísar í pixlum.
minZoom / maxZoom
ekkert
Aðdráttarsviðið sem lagið birtist á; ósett merkir að það birtist við allan aðdrátt.
attributionRules
[]
Reglur um heimildatexta eftir aðdrætti og svæði; sett á uppsprettuna.
opacity
1.0
Ógegnsæi alls lagsins (sett á lagið).
visible
true
Sýna eða fela lagið.
zIndex
0
Röð í stafla gagnvart öðrum lögum.
userAgent
MapConductor/…
User-Agent sem notað er þegar flísar eru sóttar. Stuðningur er misjafn eftir þjónustuaðilum (sjá hér að neðan).
extraHeaders
ekkert
Aukahausar sendir þegar flísar eru sóttar, t.d. auðkenningarteikn. Stuðningur er misjafn eftir þjónustuaðilum (sjá hér að neðan).

03 · Stuðningur við hausa

Flísarnar eru sóttar af korta-SDK hvers þjónustuaðila, og hvort það býður krók til að endurskrifa beiðnina er misjafnt eftir SDK-inu. Þar sem enginn krókur er eru gildin hunsuð og viðvörun skráð á keyrslutíma. Taflan hér að neðan endurspeglar það sem raunverulega sást með því að taka við flísabeiðnunum (á tæki fyrir innbyggt, í vafra fyrir vef).

Á vefnum hefur userAgent engin áhrif hjá neinum þjónustuaðila: vafrar banna að User-Agent sé skrifað yfir og ekkert SDK kemst fram hjá því. Eigindin er eftir vegna React Native, þar sem gildið berst til innbyggða SDK-sins og tekur raunverulega gildi — svo sami einingakóði keyrir bæði á vef og í RN.

Provider
iOS
Android
Vefur (extraHeaders)
Athugasemdir
MapLibre
iOS notar krókinn MLNNetworkConfiguration; Android skiptir út OkHttp-biðlaranum; vefurinn notar transformRequest í maplibre-gl. Öll þrjú bæta hausum aðeins við beiðnir sem stefna á flísahýsilinn.
MapTiler
Á iOS notar þetta sama búnað og MapLibre. MapTiler-SDK-ið fyrir Android keyrir inni í WebView, svo ekki er hægt að skjóta inn hausum frá innbyggða laginu.
MapKit
Þjónustuaðili aðeins fyrir iOS.
HERE
Á iOS fara flísarnar gegnum staðbundinn milliþjón aðeins þegar hausar eru settir, sem bætir við einu hoppi.
Google Maps
userAgent
Android sækir flísarnar sjálft, svo hvort tveggja virkar. GMSURLTileLayer á iOS birtir aðeins userAgent, svo extraHeaders er hunsað.
Mapbox
iOS- og Android-SDK-in bjóða ekkert opinbert API til að endurskrifa beiðnir. Á vefnum hefur mapbox-gl transformRequest, svo vefurinn er studdur.
ArcGIS
Sama og að ofan.
TomTom
Sama og að ofan.
Longdo
Sama og að ofan.
Leaflet
Aðeins vefur. Þegar hausar eru settir eru flísar sóttar með fetch() og settar inn sem blob.
OpenLayers
Aðeins vefur. Sama aðferð, gegnum sérsniðið tileLoadFunction.
Azure Maps
Aðeins vefur. Notar transformRequest.
Cesium
já (óstaðfest)
Aðeins vefur. Útfært með því að senda Resource með hausum, en ekki enn staðfest með mælingu vegna óskylds galla í sýnisforritinu.

Ef flísaþjónninn þinn krefst hausa, veldu þjónustuaðila sem styður þá. Þjónustuaðila án stuðnings má samt nota þegar teiknið kemst með sem breyta í vefslóðinni.

04 · Sýnidæmi

GSI-flísar

Sýnidæmið skiptir milli skyggingarkorts og staðalkorts GSI með gegnsæissleða; heimildatextinn skiptist sjálfkrafa gegnum attributionRules.

Það sem myndbandið sýnir · 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 })
Sýnidæmi á myndbandi · rasterflísar lagðar yfir
Myndband ekki tekið upp ennUtanaðkomandi flísaþjónn lagður yfir grunnkortið, flísarnar skiptast út þegar aðdrátturinn breytist.

Tengdar síður