Ale*_*iop 9 location google-maps objective-c ios google-maps-sdk-ios
我目前正在我的项目中使用Google Maps API.我正在尝试将默认相机/缩放设置为用户位置.我这样做:
@implementation ViewController{
GMSMapView *mapView_;
}
@synthesize currentLatitude,currentLongitude;
- (void)viewDidLoad
{
[super viewDidLoad];
mapView_.settings.myLocationButton = YES;
mapView_.myLocationEnabled = YES;
}
- (void)loadView{
CLLocation *myLocation = mapView_.myLocation;
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(myLocation.coordinate.latitude, myLocation.coordinate.longitude);
marker.title = @"Current Location";
marker.map = mapView_;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:myLocation.coordinate.latitude
longitude:myLocation.coordinate.longitude
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = mapView_;
NSLog(@"%f, %f", myLocation.coordinate.latitude, myLocation.coordinate.longitude);
}
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,因为当我这样做
NSLog(@"%f, %f", myLocation.coordinate.latitude, myLocation.coordinate.longitude);
Run Code Online (Sandbox Code Playgroud)
它返回0,0,并且它不给出当前位置坐标.如何正确获取用户的坐标?
小智 11
.H
#import <CoreLocation/CoreLocation.h>
@property(nonatomic,retain) CLLocationManager *locationManager;
Run Code Online (Sandbox Code Playgroud)
.M
- (NSString *)deviceLocation
{
NSString *theLocation = [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
return theLocation;
}
- (void)viewDidLoad
{
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
Run Code Online (Sandbox Code Playgroud)
这里回答.
当应用程序首次启动时,它可能还不知道您的位置,因为GPS设备通常需要一段时间才能锁定您的位置(如果它刚刚启动),特别是如果这是第一次应用程序已经运行,因此用户尚未回答提示,让应用程序访问其位置.mapView.myLocation刚刚创建了地图视图时,它似乎总是空的(无论是nil还是坐标为0,0).
因此,您需要等到用户的位置已知,然后更新摄像机位置.
一种方法可能是如何使用代码来获取如Puneet所建议的在iphone中的谷歌地图sdk获取当前位置,但请注意,那里的示例代码缺少设置位置管理器的详细信息(如设置位置管理器的委托),这可能就是为什么它不适合你.
另一种选择可能是使用KVO mapView.myLocation,如下所述:关于定位自己,一些问题
顺便提一下,mapView.myLocation在创建之前,您正在访问示例代码mapView,因此无论如何,该位置始终为零.
| 归档时间: |
|
| 查看次数: |
35069 次 |
| 最近记录: |