Skjölun / Kjarni / Vörpun og aðdráttur

Vörpun og aðdráttur

Vörpun fletur hnöttinn út á flatan skjá; aðdrátturinn segir hve nálægt þú ert. Þjónustuaðilar eru ósammála um hvort tveggja, svo MapConductor deilir einu safni fasta og formúla milli vettvanganna þriggja og fellir gildin sem birtast á einn kvarða. Notkun myndavélarinnar er á myndavélarsíðunni; hér fjöllum við um tölurnar undir henni.

ELLIPSOID
WGS84
PROJECTIONS
WebMercator · WGS84
ZOOM RANGE
0 – 22
Vettvangur

01 · Fastar jarðar

Vörpun, landmælingar og flísareikningur lesa allt úr Earth.

Fasti
Gildi
Lýsing
RADIUS_METERS
6 378 137.0
Langás WGS84 (radíus við miðbaug).
CIRCUMFERENCE_METERS
2πa
Ummál við miðbaug; notað í reikning á upplausn flísa.
FLATTENING
1 / 298.257223563
Flatning; notuð af sporvölulíkani stystu leiða.
SEMI_MINOR_AXIS_METERS
a(1 − f)
Skammás (radíus við pól).
ECCENTRICITY_SQUARED
f(2 − f)
Fyrsta miðskekkja í öðru veldi.
WEB_MERCATOR_MAX_EXTENT_METERS
πa ≈ 20 037 508.34
Stærsta gildið sem hnit í Web Mercator taka; vörpuð x og y haldast innan ±þessa.

02 · Varpanir

Vörpun hefur nákvæmlega tvær aðgerðir: project og unproject — að fletja hnit út í Offset á plani og taka það til baka aftur. Tvær útfærslur fylgja SDK-inu.

WebMercator

Web Mercator, í metrum

Varpar á planið ±20.037.508,34 m, það sama og EPSG:3857. Notað í reikning á flísamörkum og til að umreikna vegalengdir á skjá í metra.

WGS84

256 pixla flísarými

Varpar inn í hnitarými einu flísarinnar á aðdrætti 0 (256×256). Þetta er rýmið sem flísateiknararnir vinna í.

com.mapconductor.core.projection
interface ProjectionInterface {
    fun project(position: GeoPointInterface): Offset
    fun unproject(point: Offset): GeoPointInterface
}

val meters = WebMercator.project(tokyo)   // x og y eru í metrum
val tile = WGS84.project(tokyo)           // Flísahnit frá 0 upp í 256

Þegar þú þarft pixla frekar en plan, notaðu toScreenOffset / fromScreenOffset á MapViewHolder í stað vörpunar — þau taka tillit til halla og stefnu eins og þau eru raunverulega á skjánum.

03 · Aðdráttur og hæð

Flísabundnir 2D-þjónustuaðilar tjá kvarða sem aðdráttarstig; 3D-þjónustuaðilar sem hæð myndavélar eða fjarlægð. MapConductor umreiknar á milli svo forritið sjái alltaf einn aðdráttarkvarða. Hver þjónustuaðili útfærir einn umreiknara sem erfir frá sameiginlega óhlutbundna grunninum.

Breiddargráða og halli eru hluti af umreikningnum: Web Mercator stækkar í átt að pólunum, svo sama aðdráttarstig krefst margfalt annarrar hæðar myndavélar við miðbaug og á hárri breiddargráðu.

Mynd · hæð myndavélar fyrir eitt aðdráttarstig, hlutfallslega við miðbaug
0° · Miðbaugur
×1.00
30° · Kaíró
×0.87
35° · Tókýó
×0.82
Við sama aðdrátt 14 situr myndavélin um 20% lægra en hún gerði við miðbaug.
60° · Ósló
×0.50
70° · Tromsø
×0.34
Um það bil þrefalt á við miðbaug. Stilltu hæðirnar saman en hunsaðu breiddargráðuna og sýnilega svæðið rekur svona langt í sundur.
AbstractZoomAltitudeConverter · Kotlin
abstract class AbstractZoomAltitudeConverter(
    protected val zoom0Altitude: Double,
) {
    abstract fun zoomLevelToAltitude(zoomLevel: Double, latitude: Double, tilt: Double): Double

    abstract fun altitudeToZoomLevel(altitude: Double, latitude: Double, tilt: Double): Double
}

Hver pakki þjónustuaðila kemur með sinn eigin ZoomAltitudeConverter. Forritið þitt kallar hann yfirleitt ekki, en hann er til taks ef þú ert að smíða þína eigin 3D-framsetningu.

Það sem myndbandið sýnir · Android + MapLibreKotlin · Jetpack Compose
// The same camera position handed to both states
val shared = MapCameraPosition(
    position = GeoPoint.fromLatLong(35.6812, 139.7671),
    zoom = 14.0,
)
val maplibre = rememberMapLibreMapViewState(cameraPosition = shared)
val googlemaps = rememberGoogleMapViewState(cameraPosition = shared)

// Move one and the same value goes to the other
Row {
    MapLibreMapView(
        state = maplibre,
        modifier = Modifier.weight(1f),
        onCameraMoveEnd = { googlemaps.moveCameraTo(it) },
    )
    GoogleMapView(
        state = googlemaps,
        modifier = Modifier.weight(1f),
        onCameraMoveEnd = { maplibre.moveCameraTo(it) },
    )
}
Sýnidæmi á myndbandi · sama aðdráttargildi milli þjónustuaðila
Myndband ekki tekið upp ennEinu aðdráttargildi haldið á meðan skipt er um þjónustuaðila, sem sýnir hve langt raunverulegi kvarðinn rekur.

04 · Mörk

Þetta eru fastarnir sem umreikningurinn vinnur með. Neðri mörk á kósínusunum halda formúlunum frá því að springa nálægt pólunum eða þegar horft er beint niður.

DEFAULT_ZOOM0_ALTITUDE
171,319,879 m
ZOOM_FACTOR
2.0
MIN / MAX_ZOOM_LEVEL
0.0 / 22.0
MIN / MAX_ALTITUDE
100 / 50,000,000 m
MIN_COS_LAT
0.01
MIN_COS_TILT
0.05
WEB_MERCATOR_INITIAL_MPP_256
156,543.033928
TILE SIZE
256 px

Viðmiðunarhæðin fyrir aðdrátt 0 var ekki leidd út á blaði: hún er niðurstaða þess að mæla svæðið sem hver vél sýnir raunverulega við tiltekinn aðdrátt og stilla þar til þau stemmdu. Einu fastarnir eru það samband og að eitt aðdráttarþrep helmingi hæðina (ZOOM_FACTOR = 2).

Tengdar síður