Skjölun / Kortasýn / Myndavél

Myndavélin — erfiðasti hluti abstraktionarinnar

Myndavélin er bæði það erfiðasta og verðmætasta sem MapConductor sameinar. Eitt líkan — position, zoom, bearing, tilt, visibleRegion — ber sömu merkingu í meira en tíu kortavélum. Réttu sama MapCameraPosition til hvaða þjónustuaðila sem er og þú færð sömu sýn.

POSITION
lat / lng
ZOOM
0 – 22
BEARING
0 – 360°
TILT
−60 – 60°

01 · Hvers vegna það skiptir máli að sameina hana

Hver vél hefur sitt eigið myndavélarlíkan: sumar tala í aðdrætti, sumar í hæð myndavélar, sumar snúast um skotmark á jörðu, sumar hreyfa augað sjálft. Notaðu innbyggðu SDK-in beint og skipti um þjónustuaðila gefa þér aðra sýn út frá sömu tölum — og endurskrift á rökvísi skjásins.

MapConductor lokar þennan mun inni í millistykkjalaginu og birtir eitt myndavélarlíkan. Staða myndavélar verður gildi sem þú getur borið milli þjónustuaðila. Camera Sync-síðan í sýnisforritunum ýtir einni stöðu í alla þjónustuaðila í einu, svo þú sérð þá stillast upp á sama stað, sama kvarða og sama halla.

DIFFERENCE 01

Aðdráttur eða hæð

2D-flísavélar tjá kvarða sem aðdráttarstig; 3D-vélar sem hæð myndavélar eða fjarlægð. Ólíkar einingar, ólíkt viðmið.

DIFFERENCE 02

Skotmark eða auga

Sumar vélar snúast um punkt á jörðu; aðrar eru skilgreindar af stöðu augans og því hvert það horfir.

DIFFERENCE 03

Hve langt hún hallast

Hámarkshalli er ólíkur eftir vélum — og ekki ein einasta þeirra getur hallað upp á við.

Mynd · hvernig eitt moveCameraTo verður að sömu sýn í hverri vél
val camera = MapCameraPosition(
    position = geoPoint,
    zoom = 18.0,
    tilt = 70.0,
)
moveCameraTo(camera)
MapConductor
Sameinað myndavélarlíkan
position / zoom · bearing / tilt
Eftir framleiðanda
Millistykki fyrir korta-SDK
Eftir framleiðanda
Millistykki fyrir korta-SDK
Millistykkin þýða yfir í innbyggða framsetningu hverrar myndavélar. Munur á aðdráttarmiðuðum, hæðarmiðuðum og hallalausum vélum jafnast út hér.
Aðdráttarmiðaðar vélar (Google Maps · Mapbox · MapLibre …)
Hæðarmiðaðar vélar (ArcGIS · Cesium · MapKit …)
Ein inngangur; ólík innbyggð tjáning á útleiðinni — en sami staður, sami kvarði og sami halli á skjánum.
Sýnidæmi á myndbandi · Camera Sync (ein myndavélarstaða hjá öllum þjónustuaðilum)

02 · Sameinaða myndavélarlíkanið

Myndavél er eitt MapCameraPosition. Það er engin gerð fyrir hvern þjónustuaðila: búðu til gildið og réttu það til moveCameraTo.

Eigind
Lýsing
position
Punkturinn á jörðu í miðju sýnarinnar.
zoom
Kvarði, staðlaður milli þjónustuaðila gegn aðdráttarstigum Google Maps.
bearing
Stefna, í gráðum réttsælis frá réttu norðri.
tilt
Halli: 0 horfir beint niður, jákvætt hallast fram, neikvætt horfir upp fyrir sjóndeildarhringinn.
paddings
Svæðin sem viðmótið þitt hylur. Miðjun og fellingar taka tillit til þeirra.
visibleRegion
Jörðin sem er raunverulega á skjánum — markakassi auk fjögurra horna skjásins.

copy() skiptir út einstökum sviðum, og samanburður notar vikmörkin 0,01 á aðdrátt og halla svo örlítið rek sem vél tilkynnir sé ekki misskilið sem hreyfing.

Vettvangur

03 · Aðdráttarstig og hæð sem eitt hugtak

Innanhúss er aðdrátturinn sami hlutur og hæð myndavélarinnar. Umreiknari í kjarnanum varpar 2D-aðdráttarstigum í 3D-hæð og fjarlægð og til baka, svo hvert gildi þjónustuaðila er staðlað á einn sameiginlegan aðdráttarkvarða — þann sem Google Maps notar — áður en það kemst í kóðann þinn.

Þetta viðmið var ekki leitt út á blaði. Kvörðunartól í sýnisforritunum mælir svæðið sem hver vél sýnir raunverulega við tiltekinn aðdrátt, og viðmiðunarhæðin var stillt þar til svæðin stemmdu. Aðdráttur 14 þekur því sama land alls staðar.

Mynd · aðdráttarstig og kvarðinn sem þau sýna (nokkurn veginn hve margir km komast þvert yfir skjáinn)
0
≈ 40,000 km
Allur hnötturinn
Allur heimurinn í einni sýn — aðeins útlínur heimsálfa.
3
≈ 5,000 km
Heimsálfa
Heimsálfur og höf; landamæri hafa enga merkingu enn.
6
≈ 600 km
Land
Heilt land og hvar borgir þess liggja.
10
≈ 40 km
Höfuðborgarsvæði
Byggð svæði og stofnbrautir — algeng byrjunarsýn.
14
≈ 2.5 km
Hverfi
Götunetið er læsilegt; hentar lista af verslunarnælum.
17
≈ 300 m
Reitur
Gatnamót og útlínur bygginga — gönguleiðsögn.
20
≈ 40 m
Bygging
Inngangar og nákvæmar staðsetningar.
Hvert þrep tvöfaldar kvarðann. Tölurnar miðast við miðbaug og 256 px skjábreidd; raunveruleg vegalengd á jörðu breytist með breiddargráðu.
LATITUDE

Sami aðdráttur krefst mismunandi hæðar eftir breiddargráðu

Web Mercator stækkar kortið eftir því sem nær dregur pólunum, svo hæð myndavélarinnar fyrir eitt aðdráttarstig er margfalt önnur við miðbaug en á háum breiddargráðum. Umreikningurinn aðdráttur ⇄ hæð tekur tillit til þess.

ZOOM 10 · nálægt miðbaug
≈ 5,200 m
ZOOM 10 · um 70° N
≈ 1,700 m
NATIVE
Innbyggð gildi færð á þennan kvarða
±0.0
Google Maps · Mapbox 2D — Notað sem viðmið. Sameinaði aðdráttarkvarðinn fylgir þessari fjölskyldu.
+1.0
MapLibre · MapTiler · TomTom — Innbyggði aðdrátturinn liggur einu þrepi neðar, svo +1,0 hliðrun er beitt.
m
MapKit · ArcGIS · Cesium · Google 3D — Umreiknað milli aðdráttar og hæðar eða fjarlægðar, með tilliti til breiddargráðu og halla.
ZOOM RANGE
0.0 – 22.0
ZOOM FACTOR
2.0
ZOOM 0 ALTITUDE
171,319,879 m
MAPLIBRE OFFSET
+1.0

Einu fastarnir eru tvöföldun á hverju þrepi og hæðin við aðdrátt 0. Breiddargráðan er hluti af umreikningnum, svo kvarðinn rekur ekki milli Tókýó og Honolulu.

04 · Neikvæður halli, eftirlíktur

Halli liggur frá −60 til 60 gráðu. Jákvætt er kunnuglega skásýnin; neikvætt horfir upp fyrir sjóndeildarhringinn. Engin kortavél getur tjáð það beint — hvert SDK tekur aðeins við halla sem er núll eða meira.

Því heldur MapConductor stöðu og stefnu augans og endurskrifar beiðnina sem jákvæðan halla. Frá kóðanum þínum séð virkar neikvæður halli einfaldlega, og þegar myndavélin er lesin til baka færðu neikvæða gildið aftur.

tilt = 0

Grunnmynd beint niður: rétthyrningurinn á jörðu er rétthyrningur skjásins.

tilt > 0

Hallandi fram: jörðin verður að trapisu, mjó nærri, breið fjær.

tilt < 0

Horft upp fyrir sjóndeildarhringinn — sýn sem engin vél býður innbyggt.

Hvernig eftirlíkingin virkar
01
Staðsetning og hæð augans haldast óbreytt; aðeins skotmarkið á jörðu færist fram eftir stefnunni, um vegalengd sem leiðir af hæð og hallahorni.
02
Vélinni er svo gefið abs(tilt) sem halli niður á við. Þar sem augað og stefna þess stemma verður myndin sú sama og útsýnið upp á við. Vélar af MapLibre-ættinni fá fasta leiðréttingarstuðla á hliðrunina og aðdráttinn svo römmunin passi líka.
03
Þegar myndavélin er lesin til baka er sama reikningsformúla keyrð afturábak, hliðrunin fram og aðdráttarleiðréttingin dregnar frá, svo út kemur rökrétti neikvæði hallinn og upphaflega miðjan. Ferðin fram og til baka er stöðug.
Stuðningur við neikvæðan halla
Android · allir þjónustuaðilar
OK
iOS · allir þjónustuaðilar
OK
React · allir nema Google Maps 2D
OK
React · Google Maps 2D
N/A

Eina undantekningin er Google Maps 2D á React — rasterkortið úr JavaScript-API-inu. Halli þess ræðst af vafra og flísum, svo hvorki hæðin né stefnan sem eftirlíkingin byggir á verða stýrðar. Google Maps 3D (Map3DElement) styður neikvæðan halla.

TiltMapPageViewModel.kt
// Sendu bara −60…60 sleðann beint áfram; neikvætt gildi er sama kallið
currentPosition = currentPosition.copy(tilt = tilt)
mapViewState.value?.moveCameraTo(currentPosition)
Sýnidæmi á myndbandi · Tilt (sveiflað frá −60 til 60)

05 · VisibleRegion — það sem er raunverulega á skjánum

Hallaðu myndavélinni og rétthyrningur skjásins verður trapisa á jörðu. Kassi með suðvestri og norðaustri getur ekki tjáð hve miklu mjórri nálæga brúnin er. VisibleRegion ber þann kassa auk hnita fjögurra horna skjásins á jörðu.

Near er neðri brún skjásins, næst myndavélinni; far er efri brúnin. Left og right miðast við skjáinn, svo snúningur með bearing breytir ekki merkingu þeirra. Með alla fjóra punktana geturðu afmarkað gagnafyrirspurnir og heimildatexta rétt, jafnvel á hallandi korti.

farLeft
farRight
nearLeft
nearRight
Rétthyrningur á skjá → trapisa á jörðu
Fjarlægari brúnin er breiðari, sú nálæga mjórri. Mörkin eru kassinn utan um þessa trapisu.
bounds
Suðvestur-/norðaustur-kassinn utan um trapisuna, fyrir grófar athuganir og eldri API.
nearLeft / nearRight
Hnit á jörðu fyrir neðri horn skjásins — nálæga hliðin.
farLeft / farRight
Hnit á jörðu fyrir efri horn skjásins — fjarlæga hliðin, sem breikkar eftir því sem hallinn eykst.
Notað fyrir
Að sækja gögn fyrir sýnilega svæðið, fitBounds og að skipta um reglur um heimildir á flísum.
VisibleRegionViewModel.kt
mapViewState.cameraPosition.visibleRegion?.let { region ->
    val sw = region.bounds.southWest
    val ne = region.bounds.northEast
    // Fjögur horn hallandi skjás — nothæf sem trapisa
    val corners = listOf(region.nearLeft, region.nearRight, region.farLeft, region.farRight)
}

Tengdar síður