Skjölun / Grunnatriði / Marghyrningur

Marghyrningur

Flötur skilgreindur með ytri hring auk hvaða fjölda gata sem er. Bættu við fyllingu og útlínu, settu hann í kortasýnina og þú hefur svæðamerkingu eða grímu. Meðferð gata hefur sína sérvisku í hverju korta-SDK, en MapConductor jafnar hana svo útlitið sé það sama alls staðar.

POINTS
GeoPoint[]
HOLES
GeoPoint[][]
FILL / STROKE
color · width
GEODESIC
true / false
Vettvangur

01 · Staða marghyrnings

PolygonState stendur fyrir einn flöt: ytri hring, göt, fyllingu, útlínu og snertistjóra. Úthlutaðu á eigind og formið uppfærist á staðnum, svo ritill sem dregur hornpunkta er ekkert annað en hnitaskipti.

PolygonPageViewModel.kt · Jetpack Compose
val polygonState =
    PolygonState(
        points = outerRing,
        holes = listOf(holeA, holeB),
        strokeColor = Color.Red,
        strokeWidth = 3.dp,
        fillColor = Color(0x4D0064E6),
        onClick = { event -> viewModel.onPolygonClick(event) },
    )

Polygon(polygonState)

// Hornpunktar og göt uppfærast einfaldlega með því að vera endurskrifuð
polygonState.holes = nextHoles
Eigind
Lýsing
points
Ytri hringurinn; lokunin gerist innanhúss, svo þú þarft ekki að endurtaka fyrsta punktinn.
holes
Fylki af gathringum. Fleiri en einn er í lagi, og þeir mega skarast.
fillColor
Fyllingarlitur, með gegnsæi úr alfa hans.
strokeColor / strokeWidth
Litur og breidd útlínunnar; breiddin er í rökrænum einingum, svo hún lítur eins út við hvaða þéttleika sem er.
geodesic
Hvort kantar fylgi stórbaugum — sést á stórum svæðum.
zIndex · extra
Röð í stafla og hvaða gögn sem er.
onClick
Snertistjóri; tekur við stöðu marghyrningsins og hnitinu sem snert var.

02 · Göt og sameining skörunar

Göt skera svæði út úr ytri hringnum. Í grímuhönnun setur þú oft nokkur göt þar sem þú vilt sýna í gegn — og þau göt enda eðlilega á að skarast.

Fái þau skarandi göt óbreytt teikna flest korta-SDK útlínu þar sem þau skarast og afhjúpa samskeytin. MapConductor sameinar götin fyrir teikningu, svo skörun verður að einu gati og engar aukalínur birtast.

Mynd · þegar tvö skarandi þríhyrnd göt eru gefin
RAW SDK
Skörunin fer óbreytt í gegn og útlínur birtast þvert yfir hana — það sést að götin eru tvö.
MAPCONDUCTOR
Götin eru fyrst sameinuð: skörunin verður eitt gat og aðeins ytra form þess fær útlínu.
Kóði forritsins og hnit gatanna eru þau sömu í báðum tilvikum. Sameiningin gerist um leið og staðan er byggð og fylgir því með á meðan hornpunktar eru dregnir inn í skörun og út úr henni.
Skarandi göt gefin óbreytt
// Skarandi göt má gefa óbreytt; þau eru sameinuð í eitt innanhúss
PolygonState(
    points = outerRing,
    holes =
        listOf(
            triangleA, // ← þessi skarast
            triangleB,
        ),
    fillColor = Color(0xCC787880),
)

03 · Sama niðurstaða hjá hverjum þjónustuaðila

Fyrir utan skörun gata afhjúpa fylltir fletir nóg af mun milli véla. MapConductor jafnar hann svo einn PolygonState gefi eina mynd.

HOLE UNION

Skarandi göt eru sameinuð

Skörun er sameinuð í eitt svæði um leið og staðan er byggð — engin útlína þvert yfir skörunina og engin tvöföld fylling.

GEODESIC

Sama formið án stuðnings við sveigjur

Vélar sem geta ekki teiknað stórbauga fá þéttan hring í staðinn, svo stór svæði stemma alls staðar.

ANTIMERIDIAN

Svæði sem fara yfir daglínuna

Hringir sem fara yfir 180° eru klofnir við mörkin, svo vélar sem myndu fylla löngu leiðina fylla samt réttu hliðina.

HIT TEST

Sameiginleg smellprófun

Snertigreining er sameiginleg rökvísi og göt svara ekki, hvort sem undirliggjandi vél tekur tillit til þeirra eða ekki.

04 · Snerting

onClick tekur við stöðu marghyrningsins og hnitinu sem snert var — lestu fyllinguna eða extra-gögnin til að sýna nánari upplýsingar.

event.state

Staða marghyrningsins sem snert var; lestu fyllingarlit hans eða extra-gögnin.

event.clicked

Landfræðilega hnitið sem snert var.

Göt svara ekki

Snerting inni í gati ræsir ekkert fyrir þann marghyrning; aðeins sýnilega fyllingin telur.

PolygonClickPageViewModel.kt
fun onPolygonClicked(event: PolygonEvent) {
    markerState = MarkerState(
        position = event.clicked,
        icon = DefaultMarkerIcon(fillColor = event.state.fillColor),
    )
}

Þar sem marghyrningar skarast vinnur sá með hærra zIndex. Marghyrningum utan sýnilega svæðisins er sleppt, svo mörg stór svæði haldast lipur.

Tengdar síður