2011-02-17 63 views

回答

52

當過要放大5英里半徑使用下面的代碼:

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

將這個代碼變焦從當前位置到半徑5英里 – Aisha 2011-02-17 05:30:23

+0

在我的代碼中,用當前位置的用戶填寫「newLocation」變量,它將從當前位置縮放到5英里redius。 – Satyam 2011-02-17 10:47:57

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

MKCoordinateSpanMake的參數是度,1度約爲69英里在赤道。因此MAP_SPAN將是5.0/69.0

54

使用MapKit中的MKCoordinateRegionMakeWithDistance函數。

使用轉換函數將英里轉換爲米,因爲MapKit使用米。

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; 
} 

然後在你的代碼中設置地圖地區(感謝@DylanBettermann的指出來獲得5英里半徑的距離需要加倍)

mapView.region = MKCoordinateRegionMakeWithDistance(
    centerCoordinate, 
    MilesToMeters(10.0f), 
    MilesToMeters(10.0f) 
); 
相關問題