0

指のタッチで MkCircle のサイズを変更しようとしています。どうすればこれを開始できますか? 誰でも私に提案できますか?

よろしくお願いします。

4

2 に答える 2

4

同じ半径で円のように見えるカスタム円を地図ビューの上に描きます。

MKcircleの端点を見つける

  1. 中心点 CLLocationCoordinate2D を MKMapPoint に変換します

MKMapPoint centerMapPoint = MKMapPointForCoordinate(centerCoordinate)

  1. 円の MKMapSize を計算し、幅を取得します

    double circleMapSize = mkCircle.boundingMapRect.size.width

3.円周上に点を作成します。

MKMapPoint leftMostPoint = MKMapPointMake(centerMapPoint.x - circleMapSize/2.0, centerMapPoint.y)
  1. leftMostPoint から CLLocationCoordinate2D ポイントを取得する

    CLLocationCoordinate2D leftMostCoordinateOnCircle = MKCoordinateForMapPoint(leftMostPoint)

だから今、私は中心点と端点を持っていて、それをios座標の(x、y)に変換します。

CGPoint myPoint = [self.MapView convertCoordinate:originalCoordinate toPointToView:self.MapView];

CGPoint edgePoint = [self.MapView convertCoordinate:originalCoordinate toPointToView:self.MapView];

次に、ピタゴラスの定理を使用して、これらの2点の距離を計算します

int distnce1=sqrt(powf(edgePoint.x- myPoint.x, 2) + powf(edgePoint.y-myPoint.y, 2));

            int finalWidth=2*distnce1;

次に、距離をカスタム円の幅と高さに設定します

pich Gesture end の後、円の数学を使用してカスタム円の端の緯度と経度を取得しようとしています

float x = circleView.frame.size.width/2 * sin(0)+circleView.center.x;
        float y = circleView.frame.size.width/2 * cos(0)+circleView.center.y;

x,y を座標に変換する

CLLocationCoordinate2D select_coordinate = [self.MapView convertPoint:point toCoordinateFromView:self.view];

次に、MKCircle の新しい座標と中心点の b/w 距離を見つけ、MKCircle の半径を Distance に等しく変更します。

于 2013-09-18T12:04:51.523 に答える
0

最も簡単な方法の 1 つは、マップ ビューの上にある、タッチ イベントに応答する別の透明なビューで、自分で円を実際に描画することです。次に、描画が完了したら、そのビューを非表示にしますがMKCircle、同じグラフィック設定でマップ ビューに実績を追加します。

通常、このような場合は、マップ ビューの外で描画/ジェスチャーを処理する方が簡単です。

于 2013-09-17T17:45:45.560 に答える