2

Google マップでユーザーの現在位置を表示するにはどうすればよいですか?

このフォーム GPS を読む必要がありますか?

4

5 に答える 5

7

現在の位置に移動するには、次のことを行う必要があります。

self.googleMapsView.myLocationEnabled = YES;

次に、viewWillAppear メソッドでキー値オブザーバーをセットアップし、GoogleMaps SDK の Location Manager で位置情報を更新します。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Implement here to check if already KVO is implemented.
    ...
    [self.googleMapsView addObserver:self forKeyPath:@"myLocation" options:NSKeyValueObservingNew context: nil]
}

そして物件を観察。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"myLocation"] && [object isKindOfClass:[GMSMapView class]])
    {
        [self.googleMapsView animateToCameraPosition:[GMSCameraPosition cameraWithLatitude:self.googleMapsView.myLocation.coordinate.latitude
                                                                                 longitude:self.googleMapsView.myLocation.coordinate.longitude
                                                                                      zoom:self.googleMapsView.projection.zoom]];
    }
}

viewWillDisappear でオブザーバーを登録解除することを忘れないでください。

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    // Implement here if the view has registered KVO
    ...
    [self.googleMapsView removeObserver:self forKeyPath:@"myLocation"];
}

Weindlの回答に基づいています。

于 2013-05-08T19:21:00.407 に答える
1
... NSKeyValueObservingOptionNew

減価償却されます。

例に従って使用します。

[self.googleMapsView addObserver:self forKeyPath:@"myLocation" options:NSKeyValueObservingOptionNew context:nil];
于 2013-06-10T09:01:50.063 に答える
1
//In viewDidLoad
self.mapView.myLocationEnabled = YES;

//Whenever you need to check location
CLLocation *myLocation = self.mapView.myLocation;
NSLog(@"%f %f",myLocation.coordinate.latitude, myLocation.coordinate.longitude);
于 2013-06-10T11:02:02.337 に答える
0
(void)updateCurrentLocation {

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    [locationManager startUpdatingLocation];
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D currentLocation = [location coordinate];
    if(noStartSet){
        startPoint = currentLocation;
        noStartSet = FALSE;
    }
    [self.mapView animateToLocation:currentLocation];    
}

現在の場所をデフォルトにする場合は、このメソッドを呼び出しviewdidloadます。

于 2016-02-12T10:39:28.033 に答える