我有一个正确加载的GMSMapView并在我的viewcontroller中工作
我无法做的是在我的位置设置GMSCameraPosition
这是我的代码:
mapView_.myLocationEnabled = YES;
CLLocation* myLoc = [mapView_ myLocation];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:myLoc.coordinate.latitude
longitude:myLoc.coordinate.longitude
zoom:4];
[mapView_ setCamera:camera];
GPS已启用且应用程序具有所有必需的权限,但myLocation返回nil CLLocation,因此cameraWithLatitude:longitude:zoom:
获得0 0坐标并显示非洲而不是我的实际位置(不在非洲:) :)
答案 0 :(得分:13)
来自官方Google Maps iOS SDK文档:
- (BOOL)myLocationEnabled [read,write,assign] 控制是否启用“我的位置”点和精度圆。
默认为NO。
- (CLLocation *)myLocation [read,assign] 如果启用了“我的位置”,则显示正在绘制用户位置点的位置。
如果已禁用,或者已启用但没有可用的位置数据,则为零。使用KVO可以观察到这个属性。
因此,当您设置mapView_.myLocationEnabled = YES;
时,它仅告知mapView
仅在您为myLocation
属性提供位置值时才显示蓝点。 Google的示例代码显示了如何使用KVO方法观察用户位置。(推荐)您还可以实现CLLocationManagerDelegate
方法来更新mapView。
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[mapView animateToLocation:newLocation.coordinate];
// some code...
}
以下是Google地图示例代码中有关如何使用KVO更新用户位置的代码。
// in viewDidLoad method...
// Listen to the myLocation property of GMSMapView.
[mapView_ addObserver:self
forKeyPath:@"myLocation"
options:NSKeyValueObservingOptionNew
context:NULL];
// Ask for My Location data after the map has already been added to the UI.
dispatch_async(dispatch_get_main_queue(), ^{
mapView_.myLocationEnabled = YES;
});
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if (!firstLocationUpdate_) {
// If the first location update has not yet been recieved, then jump to that
// location.
firstLocationUpdate_ = YES;
CLLocation *location = [change objectForKey:NSKeyValueChangeNewKey];
mapView_.camera = [GMSCameraPosition cameraWithTarget:location.coordinate
zoom:14];
}
}
答案 1 :(得分:-4)
尝试使用MapKit,在 VieDidLoad 或 ViewWillApper 下使用:
myMapView.showsUserLocation = YES;
如果需要,您可以在IBAction下添加此简单代码,例如:
- (IBAction)getLocation:(id)sender{
myMapView.showsUserLocation = YES;
}
我希望这可以帮到你