2012-06-06 63 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

我更新了我的答案。 –