Hvordan få meter i piksel i mapkit?

stemmer
1

Jeg ønsket å teste mapKit og ønsket å gjøre min egen overlegg å vise nøyaktigheten av min posisjon. Hvis jeg har en zoomfaktor på for eksempel 0,005 som radius har min sirkel rundt meg må ha (Hvis min nøyaktighet er for eksempel 500m)?

Ville være fint å få litt hjelp :)

Takk så mye.

Publisert på 27/12/2009 klokken 11:58
kilden bruker
På andre språk...                            


3 svar

stemmer
1

For å legge til et annet svar, en forskjell på ett minutt av breddegrad tilsvarer en nautisk mil: det er hvordan nautiske mil ble definert. Så, konvertering til vedtekts miles, en nautisk mil = 1.1508 statue miles, eller 6076.1 ft. Eller 1852 meter.

Når du går til lengdegrad, størrelsen på lengde sirkler rundt Jorden krympe som breddegrad øker, som ble notert på forrige svaret. Den korrekte faktor er at

1 minute of longitude = (1852 meters)*cos(theta),

hvor theta er breddegraden.

Selvfølgelig er jorden ikke er en perfekt kule, men den enkle beregningen ovenfor ville aldri bli feil med mer enn 1%.

Svarte 28/12/2009 kl. 21:39
kilden bruker

stemmer
1

Se på dokumentasjonen for MKCoordinateSpan, som er en del av kartets regioneiendom. En breddegrad er alltid ca. 111 km, så konvertere latitudeDeltatil meter og deretter komme til meter per piksel skal være enkelt. For langsgående verdier, er det ikke fullt så lett som den avstand som dekkes av en lengdegrad varierer mellom 111 km (ved ekvator) og 0 km (ved polene).

Svarte 27/12/2009 kl. 13:01
kilden bruker

stemmer
0

Min måte å få meter per piksel:

MKMapView *mapView = ...;
CLLocationCoordinate2D coordinate = ...;

MKMapRect mapRect = mapView.visibleMapRect;
CLLocationDistance metersPerMapPoint = MKMetersPerMapPointAtLatitude(coordinate.latitude);

CGFloat metersPerPixel = metersPerMapPoint * mapRect.size.width / mapView.bounds.size.width;
Svarte 19/03/2015 kl. 00:16
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more