J'ai donc un tas d'annotations étalées sur ma carte ... tout est juste dandy. Maintenant, je dois être en mesure de définir la position et le zoom de la carte afin qu'ils s'adaptent parfaitement. Comment puis-je faire ceci?MapKit: Comment puis-je effectuer un panoramique et un zoom pour ajuster toutes mes annotations?
2
A
Répondre
4
Des forums d'Apple ...
- (void)recenterMap {
NSArray *coordinates = [self.mapView valueForKeyPath:@"annotations.coordinate"];
CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
CLLocationCoordinate2D minCoord = {90.0f, 180.0f};
for(NSValue *value in coordinates) {
CLLocationCoordinate2D coord = {0.0f, 0.0f};
[value getValue:&coord];
if(coord.longitude > maxCoord.longitude) {
maxCoord.longitude = coord.longitude;
}
if(coord.latitude > maxCoord.latitude) {
maxCoord.latitude = coord.latitude;
}
if(coord.longitude < minCoord.longitude) {
minCoord.longitude = coord.longitude;
}
if(coord.latitude < minCoord.latitude) {
minCoord.latitude = coord.latitude;
}
}
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center.longitude = (minCoord.longitude + maxCoord.longitude)/2.0;
region.center.latitude = (minCoord.latitude + maxCoord.latitude)/2.0;
region.span.longitudeDelta = maxCoord.longitude - minCoord.longitude;
region.span.latitudeDelta = maxCoord.latitude - minCoord.latitude;
[self.mapView setRegion:region animated:YES];
}
5
@interface MKMapView (zoomToFit)
- (void)zoomToFitOverlays; //Animation defaults to YES
- (void)zoomToFitOverlay:(id<MKOverlay>)anOverlay;
- (void)zoomToFitOverlays:(NSArray *)someOverlays;
- (void)zoomToFitOverlaysAnimated:(BOOL)animated;
- (void)zoomToFitOverlay:(id<MKOverlay>)anOverlay animated:(BOOL)animated;
- (void)zoomToFitOverlays:(NSArray *)someOverlays animated:(BOOL)animated;
- (void)zoomToFitOverlays:(NSArray *)someOverlays animated:(BOOL)animated insetProportion:(CGFloat)insetProportion; //inset 0->1, defaults in other methods to .1 (10%)
@end
@implementation MKMapView (zoomToFit)
#pragma mark -
#pragma mark Zoom to Fit
- (void)zoomToFitOverlays {
[self zoomToFitOverlaysAnimated:YES];
}
- (void)zoomToFitOverlay:(id<MKOverlay>)anOverlay {
[self zoomToFitOverlay:[NSArray arrayWithObject:anOverlay] animated:YES];
}
- (void)zoomToFitOverlays:(NSArray *)someOverlays {
[self zoomToFitOverlays:someOverlays animated:YES];
}
- (void)zoomToFitOverlaysAnimated:(BOOL)animated {
[self zoomToFitOverlays:self.overlays animated:animated];
}
- (void)zoomToFitOverlay:(id<MKOverlay>)anOverlay animated:(BOOL)animated {
[self zoomToFitOverlays:[NSArray arrayWithObject:anOverlay] animated:YES];
}
- (void)zoomToFitOverlays:(NSArray *)someOverlays animated:(BOOL)animated {
[self zoomToFitOverlays:someOverlays animated:animated insetProportion:.1];
}
- (void)zoomToFitOverlays:(NSArray *)someOverlays animated:(BOOL)animated insetProportion:(CGFloat)insetProportion {
//Check
if (!someOverlays || !someOverlays.count) {
return;
}
//Union
MKMapRect mapRect = MKMapRectNull;
if (someOverlays.count == 1) {
mapRect = ((id<MKOverlay>)someOverlays.lastObject).boundingMapRect;
} else {
for (id<MKOverlay> anOverlay in someOverlays) {
mapRect = MKMapRectUnion(mapRect, anOverlay.boundingMapRect);
}
}
//Inset
CGFloat inset = (CGFloat)(mapRect.size.width*insetProportion);
mapRect = [self mapRectThatFits:MKMapRectInset(mapRect, inset, inset)];
//Set
MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapRect);
[self setRegion:region animated:animated];
}
@end
+0
OP dit annotations, pas des superpositions. – kevboh
Questions connexes
- 1. UIScrollView ne peut pas effectuer de panoramique après un zoom
- 2. Comment coder le zoom et le panoramique pour un UIImageView?
- 3. jquery zoom et panoramique
- 4. mapkit et les annotations
- 5. MapKit ne supprime pas toutes les annotations
- 6. Panoramique et zoom d'image avec GWT
- 7. Quel est le meilleur moyen de réduire et d'ajuster toutes les annotations dans MapKit?
- 8. JComponent JPanel Zoom, panoramique et coordonnées Question
- 9. MapKit Annotations et l'emplacement de l'utilisateur
- 10. MapKit correction zoom
- 11. Panoramique contraint/Zoom à l'aide d'un ViewMatrix
- 12. Annotations multiples sur Mapkit pour iPhone
- 13. Comment attraper cette carte panoramique et zoom sont vraiment finis?
- 14. Google Maps - Panoramique et zoom dans les zones - les marqueurs n'apparaissent pas lorsque j'effectue un zoom avant ou un panoramique - HELP!
- 15. Effectuer un zoom arrière dans Octave/gnuplot
- 16. Effectuer un zoom avant/arrière UIView
- 17. Commande de formulaires permettant zoom, panoramique et POI
- 18. Problèmes liés à MapKit avec les annotations
- 19. MapKit dans iPhone: comment afficher les annotations groupées?
- 20. ImageView Pinch-zoom Limites d'échelle et limites de panoramique
- 21. annotations mapkit - affichage de plusieurs broches d'emplacement
- 22. Zoom et panoramique UILoader Image dans Flash CS5
- 23. Agrandir le panoramique et zoom Image dans Silverlight
- 24. Redimensionnement personnalisé MKAnnotationView selon le niveau de zoom MapKit
- 25. caméra openGL zoom/échelle autour du point et du panoramique
- 26. Gestion du zoom et du panoramique à l'intérieur de UIWebView
- 27. comment effectuer un zoom avant sur scène avec actionscript
- 28. Comment effectuer un zoom avec CHtmlEditCtrl dans MFC
- 29. Zoom par programmation, panoramique d'un UIWebView pour iPhone 2.2.1
- 30. Meilleure pratique pour le panoramique/zoom d'un contrôle utilisateur?
peut vous donner plus d'explications sur la façon de l'utiliser – Mayur