Skjölun / Meira / Innbyggðar viðbætur

Innbyggðar viðbætur

MapConductor vefur ekki hvern einasta eiginleika hvers korta-SDK. Þegar þú þarft eitthvað sem sameinaða API-ið lýsir ekki eru til tvær leiðir niður sem kosta þig ekki abstraktionina. Hvora sem þú velur heldur restin af skjánum áfram á sameiginlega API-inu.

1 · HOLDER
Android · iOS · React
2 · REGISTRY
Android · iOS · React

01 · Þar sem abstraktionin endar

Sameinaða API-ið nær yfir hugtök sem eru til alls staðar. Útdregnar 3D-byggingar, umferðarlag eins framleiðanda, sérsmíðaður skyggir — það er af ásetningi utan sviðs. Að vefja allt myndi gera sameiginlega API-ið að minnsta samfeldi og óþægilegt í notkun.

1 · MapViewHolder

Fáðu hlutinn sjálfan að láni

Dragðu fram innbyggða kortatilvikið og kallaðu beint á það SDK. Til staðar á öllum þremur vettvöngunum.

2 · MapServiceRegistry

Skjóttu inn eiginleika

Viðbótareining skráir eiginleika sinn undir gerðarbundnum lykli án þess að breyta Core. Þetta er búnaðurinn til að víkka SDK-ið sjálft.

Vettvangur

02 · Að ná til innbyggða kortsins

getMapViewHolder() á stöðuhlutnum skilar haldara sem ber sýn og kortatilvik þess þjónustuaðila. Þrengdu gerðina og þú ert kominn á hrátt SDK. Haldarinn sér líka um umreikning hnita ⇄ skjápixla.

Meðlimur
Lýsing
mapView
Sýn þjónustuaðilans — MKMapView, MapView, maplibregl-umgjörðin og svo framvegis.
map
Kortahluturinn sjálfur; það er á hann sem þú kallar SDK-ið.
toScreenOffset(position)
Hnit yfir í skjápixla, með tilliti til halla og stefnu.
fromScreenOffset(offset)
Skjápixlar aftur í hnit; til bæði ósamstillt og samstillt.
Kotlin
// Eftir þrengingu er allt héðan í frá hreint Google Maps SDK
val holder = mapViewState.getMapViewHolder()
if (holder is GoogleMapViewHolder) {
    holder.map.isTrafficEnabled = true
}

Haldarinn er ekki til fyrr en kortið hefur frumstillt sig — hann skilar null fram að því, svo kallaðu á hann inni í onMapLoaded eða síðar.

03 · Að tengja inn einingu

MapServiceRegistry er saumurinn sem viðbótareining notar til að skjóta inn eiginleika sínum án þess að breyta Core: skráðu undir gerðarbundnum lykli, sæktu með sama lykli, og af því lykillinn ber gerðina þarf engu að varpa á leiðinni út. Þyrping merkja er það sem notar hann í dag — hún sækir MarkerRenderingSupport sem þjónustuaðilinn skráði og teiknar gegnum hann.

Android · React

MapServiceRegistry

Skilgreindu MapServiceKey<T> sem einstæðing, settu hann inn í MutableMapServiceRegistry og sæktu hann aftur þar sem þarf. Á Android er kortabundna skráin nálguð gegnum CompositionLocal-gildið LocalMapServiceRegistry.

iOS

MapServiceRegistryScope

Lyklar eru gerðir sem uppfylla MapServiceKey, settir inn í MutableMapServiceRegistry. Skráin býr á stöðuhlutnum (MapViewState.serviceRegistry) og þjónustuaðilinn gerir hana sýnilega með MapServiceRegistryScope.with(...) nákvæmlega á meðan content er sett saman. Þetta er ekki SwiftUI-Environment-gildi af því kortainnihaldið er gildi af gerðinni MapViewContent, ekki sýnastigveldi.

map/MapServiceRegistry · gerðarbundni lykillinn
// Kotlin: skilgreindu lykilinn sem singleton object
object MarkerRenderingSupportKey : MapServiceKey<MarkerRenderingSupport<*>>

registry.put(MarkerRenderingSupportKey, support)
val support = registry.get(MarkerRenderingSupportKey) // Það kemur til baka með gerðina ósnerta

// Swift: skilgreindu lykilinn sem gerð sem uppfyllir MapServiceKey
enum MarkerRenderingSupportKey: MapServiceKey {
    typealias Value = any MarkerRenderingSupport
}

registry.put(MarkerRenderingSupportKey.self, support)
let support = registry.get(MarkerRenderingSupportKey.self)

// TypeScript: búðu lykilinn til með createMapServiceKey<T>()
const MarkerRenderingSupportKey = createMapServiceKey<MarkerRenderingSupport>();

Öll þrjú draga kóða sem er bundinn þjónustuaðila inn á skjáinn þinn — þann hluta sem hættir að virka þegar skipt er um þjónustuaðila. Haltu stöðunum þar sem þú notar þau saman á bak við eina grein.

Tengdar síður