Cum să obțineți metri în pixeli în mapkit?

voturi
1

Am vrut să testeze mapKit și a vrut să facă propria mea suprapunere pentru a afișa precizia poziției mele. Dacă am un factor de zoom de exemplu 0.005, care are raza de cercul meu în jurul meu trebuie să aibă (în cazul în care precizia mea este, de exemplu, 500 m)?

Ar fi minunat pentru a obține ajutor :)

Mulțumesc mult.

Întrebat 27/12/2009 la 12:58
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Pentru a adăuga la un alt răspuns, o diferență de un minut de latitudine corespunde o milă marină: care este modul în care a fost definit de mile marine. Deci, de conversie în mile, 1 milă marină = 1.1508 mile statuie, sau 6076.1 ft. Sau 1852 de metri.

Când te duci la longitudinea, dimensiunea cercurilor longitudine în jurul Pământului shrink ca latitudinea crește, după cum sa observat în răspunsul anterior. Factorul corect este că

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

în cazul în care teta este latitudinea.

Desigur, Pământul nu este o sferă perfectă, dar calcul simplu de mai sus nu s-ar fi oprit cu mai mult de 1%.

Publicat 28/12/2009 la 22:39
sursa de către utilizator

voturi
1

Uită - te la documentația pentru MKCoordinateSpan, care este parte a hărții de regionproprietate. Un grad de latitudine este întotdeauna cca. 111 km, astfel încât conversia latitudeDeltala metri și apoi ajunge la contoarele per pixel ar trebui să fie ușor. Pentru valori longitudinale nu este chiar atât de ușor ca distanța parcursă de un grad de longitudine variază între 111 km (la ecuator) și 0 km (la poli).

Publicat 27/12/2009 la 14:01
sursa de către utilizator

voturi
0

Felul meu de a obține de metri per pixel:

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

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

CGFloat metersPerPixel = metersPerMapPoint * mapRect.size.width / mapView.bounds.size.width;
Publicat 19/03/2015 la 00:16
sursa de către utilizator

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