2010-12-06 28 views
2

Contexte: Je suis construire une série d'applications basées sur la localisation qui font un usage intensif de cartes. Ces cartes sont annotées avec des emplacements récupérés à partir d'un serveur, auquel je passe les régions de la carte dont j'ai besoin des données pour (définies comme lat/long et un latDelta/longDelta, un peu comme MKCoordinateRegion, mais avec un autre emplacement de coordonnées de référence) . J'écris un tas de méthodes/classes auxiliaires à utiliser pour gérer ces régions. Compatibilité avec iOS 3.x est nécessaire (ce qui signifie que MKMapRect est sorti). Est-ce que je me prépare à l'échec en traitant MKRoordinateRegions comme des rectangles? Plus précisément, je traite leur géométrie comme si elle était celle d'un rectangle, en supposant qu'ils ont essentiellement les mêmes propriétés que les rectangles. J'ai implémenté plusieurs méthodes qui reflètent les méthodes d'aide de CGRect, telles que MKCoordinateRegionUnion/Inset/Outset, etc., et elles passent toutes mes tests unitaires, mais je commence à me demander si mes suppositions sous-jacentes sont correctes. Je sais en effet que MKCoordinateRegion ne représente pas un rectangle géométrique, mais plutôt une région d'une surface sphérique liée par deux ensembles de plans parallèles, perpendiculaires les uns aux autres (points de bonus si quelqu'un peut me la moindre idée sur un meilleur terme pour cela).Est-ce que traiter MKCoordinateRegion comme un rectangle reviendra me hanter?

Je ne rencontre pas encore d'anomalies, mais comme de nombreuses applications dépendront de ma compréhension de la géométrie, je préférerais comprendre maintenant si je me trompe de chemin. Le fait que j'ai dormi à travers la plupart des classes à l'école traitant de la géométrie radiale 3d ne me donne pas beaucoup de confiance que mon intuition est correcte.

Répondre

5

Si vous prenez en compte l'équateur, le méridien et les cas de bord de Dateline, je pense que vous serez ok.

Sinon, vous pouvez développer votre propre MKMapRect comme rects. Troy Brant a un grand poste de blog sur la façon dont les rects sont formés:

http://troybrant.net/blog/2010/01/mkmapview-and-zoom-levels-a-visual-guide/

Alors que le blog est principalement sur les niveaux de zoom, toutes les informations, il peut être utilisé pour construire votre propre bibliothèque rect carte.

En ce qui concerne les zones délimitées par de grands cercles sur la surface d'une sphère, ils sont appelés polygones sphériques. Donc je suppose que vous pourriez simplement les appeler des rectangles sphériques.