1

そこで、CLLocationManager を作成し、それを呼び出して更新を開始し、mapView.showsUserLocation を YES に設定し、userLocation アノテーションに対して nil を返しました。UIMapViewController のコードの一部を次に示します。

- (void)viewDidLoad
{
     CLLocationManager *locationManager = [[CLLocationManager alloc] init];
     [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{ 
 CLLocationCoordinate2D userCoordinate = locationManager.location.coordinate;
 [map setCenterCoordinate:userCoordinate animated:YES];
 [map setShowsUserLocation:YES];  
}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

 MKAnnotationView *mapIconView = (MKAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapIconView"];

 // Don't mess with the user location annotation
     if (annotation == mapView.userLocation)
              return nil;

    // etc.
}     

これはすべて非常に簡単に思えます。すべてが正常に機能します。マップは目的どおりに現在地にズームし、すべてのメソッドが期待どおりに呼び出されることを確認しましたが、青い点はありません。どこで何回言っても一生青い点は取れない

mapView.setUserLocation = YES;

ここで何が欠けていますか?

4

5 に答える 5

1

私がこれを行うとき、あなたが持っているようにチェックするのではなくannotation、私は次のように何かをします:

if([annotation class] == MKUserLocation.class) {
    return nil;
}
于 2010-08-24T00:03:32.617 に答える
1

青い点が表示されないという同じ問題がありました。思っていた場所ではなく、表示されていたことがわかりました。

私の問題と同様に、あなたのコードは、場所の更新を処理し、MKMapView にユーザーの場所を追跡するように要求しているように見えます。シミュレーターでは、これらは 2 つの異なる場所であることに注意してください。MKMapView がシミュレーターでユーザーの位置を追跡している場合、「実際の」位置に関係なく、カリフォルニア州クパチーノにある Apple の位置が示されます。

このコードを使用して、自分で場所を追跡する代わりに MKMapView にデリゲートの場所を追跡させると、青い点が表示されます。

- (void)mapView:(MKMapView *)theMapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    [theMapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
}

おそらく、少しズームインしたくなるでしょう。これを行うには、このブログ エントリの便利なコードを使用しました: MKMapView のズーム レベルを設定する

于 2011-01-09T16:13:38.700 に答える
1

mapView.showUserLocation = YES; です。

「show」の代わりに間違ったステートメント「set」を使用したようです。

参考までに、ユーザーの場所を取得するためだけに場所マネージャーをいじる必要はありません。mapview.showUserLoction = YESマップを設定してロードすると、Corelocation が自動的に開始されます。

それが役に立てば幸い :)

于 2010-10-01T12:03:52.123 に答える
1

マップのどこからでもすべての注釈を削除していないことを確認してください。

例 [mapView removeAnnotations:mapView.annotations]

于 2013-06-19T13:14:24.790 に答える
0

iOSシミュレーターを使用している場合、青い点は表示されません。私はまったく同じ問題を抱えていました。実際のハードウェアでソフトウェアを試し始めたとき、青い点が表示されました。

于 2010-12-26T14:23:50.940 に答える