Voici une astuce pour vous aider à faire face à MapViews. Afin de régler le niveau de zoom dans une MapView, vous devez spécifier une region pour lui montrer. La région comprend une span, Qui précise dans degrés de latitude et longitude combien de surface à montrer. Vous pouvez obtenir une conversion approximative des degrés de longitude et latitude en miles en utilisant les constantes suivantes et les macros:
Une fois que vous en avez, en spécifiant une région à l'émission est relativement facile. Disons que je veux montrer quelque un demi-mile autour d'un endroit donné dans ma méthode déléguée de base Lieu (je sais MapView permettra de suivre l'emplacement pour vous, ceci est juste un moyen pratique pour montrer comment utiliser les macros):
Ce ne sont pas exactes, mais ils devraient être assez proches. Bien que la distance représentée par un degré de latitude n'est pas une constante, elle varie d'une petite quantité suffisante pour être insignifiant pour ce calcul. Pour la longitude, un degré à l'équateur est sensiblement plus grand que d'un degré dans le cercle arctique, nous devons donc utiliser un peu de mathématiques pour obtenir le nombre approximatif.
C'est tout. Avec ce code, il zoome vers l'emplacement actuel et montre approximativement un quart de mile de chaque côté de l'emplacement actuel. L'appel d'ajuster la région va changer qu'un peu pour adapter le format de la vue. Vous voulez effectuer un zoom arrière? Changer 0,5 à une valeur supérieure. Si vous utilisez 10, il montrera à environ cinq miles de chaque côté de l'emplacement actuel.
Whoops! Il s'avère qu'il ya déjà une fonction intégrée qui fonctionne de façon similaire à ces macros: MKCoordinateRegionMakeWithDistance ()
#define kApproxRadiusOfEarthInMiles 3963.1676
#define kApproxSizeOfOneDegreeLatitudeInMiles 68.71
#define kApproxSizeOfOneDegreeLongitudeAtLatitude(lat) ((M_PI/180.0)* kApproxRadiusOfEarthInMiles *cos(lat))Une fois que vous en avez, en spécifiant une région à l'émission est relativement facile. Disons que je veux montrer quelque un demi-mile autour d'un endroit donné dans ma méthode déléguée de base Lieu (je sais MapView permettra de suivre l'emplacement pour vous, ceci est juste un moyen pratique pour montrer comment utiliser les macros):
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
MKCoordinateSpan viewSpan;
viewSpan.latitudeDelta = 0.5 / kApproxSizeOfOneDegreeLatitudeInMiles;
viewSpan.longitudeDelta = 0.5 / kApproxSizeOfOneDegreeLongitudeAtLatitude(newLocation.coordinate.latitude);
MKCoordinateRegion viewRegion;
viewRegion.center = newLocation.coordinate;
viewRegion.span = viewSpan;
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
[mapView setRegion:adjustedRegion animated:YES];
}Ce ne sont pas exactes, mais ils devraient être assez proches. Bien que la distance représentée par un degré de latitude n'est pas une constante, elle varie d'une petite quantité suffisante pour être insignifiant pour ce calcul. Pour la longitude, un degré à l'équateur est sensiblement plus grand que d'un degré dans le cercle arctique, nous devons donc utiliser un peu de mathématiques pour obtenir le nombre approximatif.
C'est tout. Avec ce code, il zoome vers l'emplacement actuel et montre approximativement un quart de mile de chaque côté de l'emplacement actuel. L'appel d'ajuster la région va changer qu'un peu pour adapter le format de la vue. Vous voulez effectuer un zoom arrière? Changer 0,5 à une valeur supérieure. Si vous utilisez 10, il montrera à environ cinq miles de chaque côté de l'emplacement actuel.
Whoops! Il s'avère qu'il ya déjà une fonction intégrée qui fonctionne de façon similaire à ces macros: MKCoordinateRegionMakeWithDistance ()
Aucun commentaire:
Enregistrer un commentaire