0

森の中に一連のトレイルがあるアプリを作っています。GPSは時々数十メートルオフになるので、userLocationViewをトレイル(ユーザーがいる可能性が高い場所)に「スナップ」するコードを記述しようとしています。

近くのトレイルをスキャンし、ユーザーの推定位置を特定し、CLLocationCoordinate2Dを取得するコードが機能しています。

次に、その場所をuserLocationViewに適用する必要があります。これでうまくいくと思いましたが、そうではないようです。

userLocationAnnotation.coordinate = myDerivedCoordinate;

おそらく自分で注釈を作成できると思いますが、可能であればそれは避けたいと思います。

4

1 に答える 1

1

MapViewからユーザーの場所を直接取得しますが、CLLocationManagerこのやり取りを傍受する方法は文書化されていません。これを行うと、独自の注釈を追加するよりも手間がかかり、アプリが拒否される原因になります。また、システムが提供する正しい情報を再定義しても意味がありません。が読み取り専用のロケーション プロパティを持つのはそのためmapView.userLocationです。MKUserLocation

したがって、大まかに、独自のものを作成する必要があります。

  • 設定mapView.showsUserLocation = false;
  • ロケーション マネージャーを作成して開始する

    self.locationManager = [CLLocationManager new]; self.locationManager.delegate = self; [self.locationManager startUpdatingLocation];

  • locationManager:didUpdateToLocation:fromLocation:から独自の青い点の注釈を追加/置換しますCLLocationManagerDelegate

UIKit-Artwork-Extractor を使用すると、青い点のグラフィック (およびおそらく脈動する円) を取得できます。MKAnnotationView脈動効果については、さまざまなフレームでaに追加するUIImageViewか、1 つの円を取得してプロパティUIView animateWithDurationの a と一緒に使用します。CGAffineTransformMakeScaleview.transform

于 2012-07-17T22:53:21.583 に答える