2012-06-06 184 views
1

我已經設置了一個CLLocation對象,我加了MKCircle覆蓋。我想MKCircleradius變量是相對的兩本:MKMapView覆蓋問題

  1. 地圖視圖
  2. 位置的大小

做的大小,我怎麼能找回某種尺寸值從CLLocation?甚至更好,一旦我與地圖視圖交互/放大,它會自動縮放嗎?以下是我的目標概述:

將疊加層添加到地圖視圖。覆蓋圖將位於CLLocationCLLocationCoordinate2D變量,但我希望該覆蓋圖符合該位置的大小,然後在放大和縮小地圖時調整大小,我很確定它應該自動執行。我知道我需要定義MKCircle的半徑變量,但是我應該如何設置它?那麼,你們知道我該怎麼做嗎?

謝謝!

UPDATE:

CLLocation *org = [[CLLocation alloc] initWithLatitude:coordO.latitude longitude:coordO.longitude]; 
CLLocation *des = [[CLLocation alloc] initWithLatitude:coordD.latitude longitude:coordD.longitude]; 

MKCircle *myCircle = [MKCircle circleWithCenterCoordinate:coordO radius:org.horizontalAccuracy]; 
MKCircle *myCircle2 = [MKCircle circleWithCenterCoordinate:coordD radius:des.horizontalAccuracy]; 

if (myCircle2 && myCircle) { 

    NSLog(@"destination and origin both valid"); 
} 

[mapView addOverlays: [NSArray arrayWithObjects:myCircle, myCircle2, nil]]; 

[myCircle setTitle:@"Placeholder"]; 
[myCircle2 setTitle:@"Placeholder"]; 

[localOverlays addObjectsFromArray: [NSArray arrayWithObjects:myCircle, myCircle2, nil]]; 

這是我用它來覆蓋添加到地圖視圖,雖然它不工作,覆蓋(MKCircle這我相信是一個圓圈)的代碼是不存在的/可見。我看了一下HazardMap蘋果示例代碼,看起來他們已經創建了一些其他的安裝類。這是必要的,我的代碼有什麼問題。謝謝!

回答

1

MKCircle的半徑是CLLocationDistance,它代表以米爲單位的距離測量值。 CLLocation的水平精度爲CLLocationAccuracy,它代表以米爲單位的座標值的精度。

所以,你需要做的是:

MKCircle *circle = [MKCircle circleWithCenterCoordinate:location.coordinate 
               radius:location.horizontalAccuracy]; 

UPDATE:的覆蓋是不可見的,因爲您手動創建的位置,所以他們的水平精度是零。您可以使用方法-[CLLocation initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:]以自定義水平精度創建CLLocation。或者你可以定義圓圈的最小半徑(例如10米):

CLLocationDistance radius = MAX(10, location.horizontalAccuracy); 
+0

謝謝尼古拉斯,我可以很快問你一個問題嗎?我有一些代碼,增加了我的答案更新所示的MKCircle覆蓋。如果你回答了,我將不勝感激。 – MCKapur

+0

我已經更新了我的問題! – MCKapur

+0

我更新了我的答案。 –