2011-10-06 2 views
4

Je cherche un MKMapView qui peut défiler continuellement dans n'importe quelle direction et se répète. Ce doit être une MKMapView/sous-classe et non un Map-Framework personnalisé comme route-moi.continu/répétition MKMapView

Comment l'implémenter sur un MKMapview?

+0

Vous voulez faire le tour de la Terre ou répéter une (petite) section donnée d'une carte? – jbat100

+0

Pour faire le tour de la Terre dans n'importe quelle direction à n'importe quel niveau de zoom. – yinkou

Répondre

0

Je ne sais pas s'il existe déjà un cadre pour cela, mais voici une idée. Utilisez l'exemple infini de vue de défilement de l'idée wwdc et appliquez-le à mapview. Ainsi, par exemple, utilisez deux vues côte à côte (pour un défilement infini le long de l'axe X)

Habituellement, une vue cartographique sera affichée, mais lorsque le glisser dépasse les bords gauche/droite, vous pouvez faire glisser une vue cartographique et glisser dans une autre carte. Votre viewcontroller devra bien sûr ajouter des annotations aux deux cartes, et si vous voulez prendre en charge n'importe quelle direction, cela peut signifier que vous avez besoin de 4 vues de carte pour couvrir le cas d'angle.

Vous pouvez probablement traiter mapview comme scrollview lorsque vous effectuez cette opération de défilement infinie, comme décrit dans wwdc 2011 scrollview session.

Pour conserver la synchronisation des deux cartes, vous devez passer des messages entre deux, par exemple le niveau de zoom. Vous ne savez pas si mapview a tout ce dont vous avez besoin pour observer ces choses, mais jetez un oeil. Vous pouvez éventuellement utiliser KVO pour observer la variable interne sans violer la vérification de l'API privée Apple.

Bonne chance et laissez-moi savoir comment ça se passe.

+0

Réservoirs! J'ai déjà pensé à cela et j'ai commencé à l'implémenter, mais malheureusement, les nouveaux appareils peuvent (orge) gérer 4 cartes à la fois avec toutes leurs annotations. :(Merci beaucoup de partager vos pensées mais ce n'est pas assez pour moi. – yinkou