4

それを隠す簡単な方法はありますか?ユーザーの場所を使用していますが、青い点を表示したくありません。どうすれば非表示にできますか?

- 編集 -

私は何か間違ったものを使用していますか?

@interface ALMapaViewController : UIViewController <MKMapViewDelegate,
                                                    MKAnnotation>
{
    IBOutlet MKMapView *mapaPrincipal;
    id<ALMapaViewControllerDelegate> delegateMap;
    CLLocationCoordinate2D coordinate; 
}

私の.m

@implementation ALMapaViewController

- (void)viewDidLoad{

    [super viewDidLoad];
    [mapaPrincipal setMapType:MKMapTypeStandard];
    [mapaPrincipal setZoomEnabled:YES];
    [mapaPrincipal setScrollEnabled:YES];

    [mapaPrincipal.userLocation addObserver:self 
                                forKeyPath:@"location" 
                                   options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) 
                                   context:nil];
    [mapaPrincipal setShowsUserLocation:YES]; 
}


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {      
    MKCoordinateRegion region;
    region.center = mapaPrincipal.userLocation.coordinate;  
    MKCoordinateSpan span; 
    span.latitudeDelta  = 0.005f; 
    span.longitudeDelta = 0.005f; 
    region.span = span;
    [mapaPrincipal setRegion:region animated:YES];
    self.coordinate = region.center; 
    [mapaPrincipal addAnnotation:self];
    [mapaPrincipal setShowsUserLocation:NO];
}
@end

私はすでにを使用しましたがshowUserLocation、それでも青い点が表示されます。

4

5 に答える 5

7

ユーザーの位置情報の更新を受信したいが、青い点を表示したくない。

1つのオプションはCLLocationManager、マップビューのの代わりに更新を取得するために使用することshowsUserLocationです。ロケーションマネージャを呼び出しstartUpdatingLocation、そのlocationManager:didUpdateToLocation:fromLocation:デリゲートメソッドを実装します。

を使用したくない場合は、別のオプションとして、マップビューのデリゲートメソッドでプロパティをにCLLocationManager設定することにより、マップビューによって作成されたユーザーロケーションビューを非表示にします。マップビューは引き続きユーザーの位置情報の更新を受信しますが(に設定していないため)、ビューを非表示にしているため、青い点は表示されません。hiddenYESdidAddAnnotationViewsshowsUserLocationNO

2番目のオプションの例をこの回答に示します
。MKMapViewshowsUserLocation==YESの場合にMKUserLocationを非表示にする


userLocation無関係な点は、マップビューのプロパティ への変更を監視するためにKey-Value監視を使用する必要がないことです。mapView:didUpdateUserLocation:代わりにデリゲートメソッドを使用してください。

于 2012-05-02T13:17:46.303 に答える
6

とてもシンプルな仲間

[mapView setShowUserLocation:NO];
于 2012-05-02T03:06:45.460 に答える
0

didAddAnnotationViewsデリゲートメソッドでユーザーの場所のビューを非表示にできます。

(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
  { 
    MKAnnotationView *ulv = [mapView viewForAnnotation:mapView.userLocation];
    ulv.hidden = YES;
  }

これを確認してくださいhttps://stackoverflow.com/a/9713085/1344237

于 2016-01-08T15:54:05.360 に答える
0

この方法を使用できます

[mapViewSelf setShowsUserLocation:NO];

于 2017-02-16T10:00:57.830 に答える
0

これは正常に機能します。

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews (NSArray<MKAnnotationView *> *)views {
  MKAnnotationView *ulv = [mapView viewForAnnotation:mapView.userLocation];
  if (ulv) {
    CALayer *layer = [ulv valueForKeyPath:@"_accuracyLayer"];
    if (layer) {
        [layer removeFromSuperlayer];
    }
  }
}
于 2020-07-01T09:03:01.190 に答える