1

オブジェクトを設定しました。オーバーレイCLLocationを追加しています。MKCircleradius変数を次のMKCircle2つに対して相対的なものにします。

  1. マップビューのサイズ
  2. 場所のサイズ

では、どうすれば?からある種のサイズ値を取得できますかCLLocation?さらに良いことに、マップビューを操作/ズームインすると、自動的に拡大縮小されますか?これが私の目的の概要です:

マップビューにオーバーレイを追加します。オーバーレイはCLLocation CLLocationCoordinate2D可変になりますが、そのオーバーレイをその場所のサイズに合わせて、マップでズームインおよびズームアウトしたらサイズを変更する必要があります。これは自動的に行われるはずです。の半径変数を定義する必要があることはわかっていますMKCircleが、どのように設定すればよいですか?だから、あなたたちは私がこれを行う方法を知っていますか?

ありがとう!

アップデート:

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メートルCLLocationDistance単位の距離測定値を表すaです。aの水平精度は、CLLocationメートル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 に答える