Comment obtenir en mètres pixel dans MapKit?

voix
1

Je voulais tester le MapKit et je voulais faire mon propre superposition pour afficher l'exactitude de ma position. Si j'ai un facteur de zoom par exemple de .005 dont le rayon que mon cercle autour de moi doit avoir (si ma précision est par exemple 500m)?

Ce serait génial d'obtenir de l'aide :)

Merci beaucoup.

Créé 27/12/2009 à 12:58
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
1

Pour ajouter à une autre réponse, une différence d'une minute de latitude correspond à un mile nautique: voilà comment est défini le mile nautique. Ainsi, la conversion en miles de lois, 1 mille marin = 1.1508 miles statue, ou 6076.1 pi. Ou 1852 mètres.

Quand vous allez à la longitude, la taille des cercles de longitude autour de la Terre rétrécir comme la latitude augmente, comme on l'a noté la réponse précédente. Le facteur est que correct

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

où thêta est la latitude.

Bien sûr, la Terre est pas une sphère parfaite, mais le simple calcul serait surtout jamais hors de plus de 1%.

Créé 28/12/2009 à 22:39
source utilisateur

voix
1

Regardez la documentation MKCoordinateSpan, qui fait partie de la carte de regionpropriété. Un degré de latitude est toujours environ. 111 km, donc convertir le latitudeDeltaen mètres, puis se rendre à la mètres par pixel devrait être facile. Pour les valeurs longitudinales , il est pas tout à fait aussi facile que la distance parcourue par un seul degré de longitude varie entre 111 km (à l'équateur) et 0 km (aux pôles).

Créé 27/12/2009 à 14:01
source utilisateur

voix
0

Ma façon d'obtenir mètres par pixel:

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

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

CGFloat metersPerPixel = metersPerMapPoint * mapRect.size.width / mapView.bounds.size.width;
Créé 19/03/2015 à 00:16
source utilisateur

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