Google マップでユーザーの現在位置を表示するにはどうすればよいですか?
このフォーム GPS を読む必要がありますか?
Google マップでユーザーの現在位置を表示するにはどうすればよいですか?
このフォーム GPS を読む必要がありますか?
現在の位置に移動するには、次のことを行う必要があります。
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の回答に基づいています。
... NSKeyValueObservingOptionNew
減価償却されます。
例に従って使用します。
[self.googleMapsView addObserver:self forKeyPath:@"myLocation" options:NSKeyValueObservingOptionNew context:nil];
//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);
(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
ます。