2

MapView に現在地が表示されていますが、赤いピン (または青い円) が表示されません。このデバイスでは位置情報サービスが有効になっています。ただし、赤いピンはシミュレーターで同じコードを実行していることが示されています。私はすでに必要なプロパティを設定しています:

self.mapView.showsUserLocation = YES;

カスタム ピンを使用していますが、「mapView:viewForAnnotation:」はカスタム アノテーションごとにのみ呼び出されるため、このメソッドは現在の場所に対して呼び出されていないように見えます。そのため、赤いピンが表示されません。ただし、同じコードがシミュレーターで正しく実行される理由は非常に奇妙です。

UPDATE mapViewで空のシングルビュープロジェクトを作成しました。self.mapView.showsUserLocation = YES を追加しましたが、現在の場所はデバイスに表示されません。しかし、シミュレーターには青い円が表示されます。iPhone4でiOS 6.1.2を使用しています。

4

3 に答える 3

3

mapView:viewForAnnotation:現在の場所に対して呼び出されます。

ドキュメントから

注釈パラメーターのオブジェクトが MKUserLocation クラスのインスタンスである場合、ユーザーの場所を示すカスタム ビューを提供できます。デフォルトのシステム ビューを使用してユーザーの位置を表示するには、nil を返します。

そのデリゲート メソッドの実装で、渡された注釈のクラスを確認し、それに応じて続行します (nil を返して青い点を使用するか、カスタム ビューを返します)。

呼び出されない場合は、何か他のことが進行中です。

于 2013-07-19T09:50:08.893 に答える
1

mapView:viewForAnnotation メソッドで、他のコードの前に追加

if([a isKindOfClass:[MKUserLocation class]])
   return;
于 2013-07-19T09:50:48.657 に答える