1

我已经设置了一个CLLocation对象,我正在添加MKCircle覆盖。我希望的radius变量MKCircle是相对于这两个:

  1. 地图视图的大小
  2. 位置的大小

那么,如何从 a 中检索某种大小值CLLocation?更好的是,一旦我与地图视图交互/缩小,它会自动缩放吗?这是我的目标的概述:

将叠加层添加到地图视图。叠加层将是一个CLLocation CLLocationCoordinate2D变量,但我希望该叠加层适合该位置的大小,然后在我放大和缩小地图时调整大小,我很确定它应该自动完成。我知道我需要定义MKCircle's radius 变量,但是我应该如何设置呢?那么,你们知道我该怎么做吗?

谢谢!

更新:

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 Apple 示例代码,看起来他们已经创建了一些其他类进行设置。这是必要的吗,我的代码有什么问题。谢谢!

4

1 回答 1

1

a 的半径MKCircle是 a CLLocationDistance,它表示以米为单位的距离测量值。CLLocationa的水平精度CLLocationAccuracy表示坐标值的精度,以米为单位。

所以,你需要做的就是:

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

更新:覆盖不可见,因为您手动创建了位置,因此它们的水平精度为零。您可以使用 方法创建CLLocation具有自定义水平精度的-[CLLocation initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:]。或者您可以定义圆的最小半径(例如 10 米):

CLLocationDistance radius = MAX(10, location.horizontalAccuracy);
于 2012-06-06T13:18:45.213 回答