2 votes

Comment convertir MKZoomScale en un niveau de zoom standard [0-20] ?

Je voudrais écrire quelques règles de dessin à l'intérieur de drawMapRect:zoomScale:inContext: basées sur les niveaux de zoom standard [0-20] utilisés par des plateformes de cartographie comme Google Maps, mais je ne parviens pas à trouver une formule pour convertir MKZoomScale à cette échelle. Des intéressés ?

6voto

MuteQ Points 76

Essayez cette catégorie sur MKMapView

@interface MKMapView (Additions)
- (double)zoomLevel;
@end

@implementation MKMapView (Additions)

- (double)zoomLevel {
    double totalTilesAtMaxZoom = MKMapSizeWorld.width / 256.0;
    NSInteger zoomLevelAtMaxZoom = log2(totalTilesAtMaxZoom);

    return MAX(0, zoomLevelAtMaxZoom + log2f(self.zoomScale));
}

@end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X