2011-02-17 10 views

Respuesta

52

utilizar el siguiente código cuando cada vez que desee ampliar a 5 millas de radio:

double miles = 5.0; 
double scalingFactor = ABS((cos(2 * M_PI * newLocation.coordinate.latitude/360.0))); 

MKCoordinateSpan span; 

span.latitudeDelta = miles/69.0; 
span.longitudeDelta = miles/(scalingFactor * 69.0); 

MKCoordinateRegion region; 
region.span = span; 
region.center = newLocation.coordinate; 

[mapView setRegion:region animated:YES]; 
+0

será este código de zoom a 5 millas de radio de la ubicación actual – Aisha

+0

En mi código, complete la variable "nueva ubicación" con la ubicación actual del usuario y se ampliará a 5 millas redius desde la ubicación actual. – Satyam

+0

¿Qué es eso que necesitas? – Satyam

2
[self.theMapView setRegion:MKCoordinateRegionMake(
        [theConsumer.latLong.clLocation coordinate], 
        MKCoordinateSpanMake(MAP_SPAN, MAP_SPAN)) 
       animated:YES]; 

Los parámetros a MKCoordinateSpanMake están en grados y 1 grado es de aproximadamente 69 millas en el ecuador. Por lo tanto, MAP_SPAN sería 5.0/69.0

54

Utilice la función MKCoordinateRegionMakeWithDistance de MapKit.

utiliza una función de conversión para convertir miles de metros desde MapKit utiliza metros.

float MilesToMeters(float miles) { 
    // 1 mile is 1609.344 meters 
    // source: http://www.google.com/search?q=1+mile+in+meters 
    return 1609.344f * miles; 
} 

Luego, en su conjunto de códigos como la región del mapa (gracias a @DylanBettermann por señalar que para obtener un radio de 5 millas, la distancia debe ser duplicado)

mapView.region = MKCoordinateRegionMakeWithDistance(
    centerCoordinate, 
    MilesToMeters(10.0f), 
    MilesToMeters(10.0f) 
); 
+0

No estoy seguro de si 'MKCoordinateRegionMakeWithDistance' ha cambiado desde la publicación, pero en iOS 9 solo obtendrá un radio de 2.5 millas. Pase el diámetro a 'MKCooridinateRegionMakeWithDistance' en lugar del radio. (por ejemplo, 'MilesToMeters (10.0f)' para un radio de 5 millas) –

+0

@DylanBettermann: gracias por señalarlo. No creo que la API haya cambiado hasta donde yo sé. Siempre ha sido la distancia norte-sur, o este-oeste. Actualizado el código de muestra. – Anurag

Cuestiones relacionadas