iOS 使用高德地图 MAMapView 无法定位的问题
2015-04-15 11:40
661 查看
//模拟器是无法定位的,必须真机上
http://blog.csdn.net/johnzhjfly/article/details/39497751
在iOS8的设备上,使用高德地图SDK你会发现MAMapView里的回调位置是空的。
[objc] view
plaincopy
-(void)mapView:(MAMapView*)mapView didUpdateUserLocation:(MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation
{
CLLocation *currentLocation = userLocation.location;
if (currentLocation) {
}
}
在iOS8上currentLocation是空的,导致定位失败了。我们知道苹果在iOS8上对定位进行了大幅度优化,可以支持室内定位,常去地点统计,楼层等。
高德失败的原因可能是未对iOS8做适配。
解决方法是:
1.工程的info.plist添加NSLocationWhenInUseDescription,NSLocationAlwaysUsageDescription字段,不同的字段对应的方法不同
2.在AppDelegate.m中声明个CLLocationManager私有变量,代码如下:
[objc] view
plaincopy
@interface AppDelegate()<CLLocationManagerDelegate>
{
UINavigationController *_navController;
CLLocationManager *_locationmanager;
}
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIApplication sharedApplication].idleTimerDisabled = TRUE;
_locationmanager = [[CLLocationManager alloc] init];
[_locationmanager requestAlwaysAuthorization]; //NSLocationAlwaysUsageDescription
[_locationmanager requestWhenInUseAuthorization]; //NSLocationWhenInUseDescription
_locationmanager.delegate = self;
}
这样在MAMapView的回调
[objc] view
plaincopy
-(void)mapView:(MAMapView*)mapView didUpdateUserLocation:(MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation
就可以正常获取用户当前位置了,此时userLocation.location是有值的。
http://blog.csdn.net/johnzhjfly/article/details/39497751
在iOS8的设备上,使用高德地图SDK你会发现MAMapView里的回调位置是空的。
[objc] view
plaincopy
-(void)mapView:(MAMapView*)mapView didUpdateUserLocation:(MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation
{
CLLocation *currentLocation = userLocation.location;
if (currentLocation) {
}
}
在iOS8上currentLocation是空的,导致定位失败了。我们知道苹果在iOS8上对定位进行了大幅度优化,可以支持室内定位,常去地点统计,楼层等。
高德失败的原因可能是未对iOS8做适配。
解决方法是:
1.工程的info.plist添加NSLocationWhenInUseDescription,NSLocationAlwaysUsageDescription字段,不同的字段对应的方法不同
2.在AppDelegate.m中声明个CLLocationManager私有变量,代码如下:
[objc] view
plaincopy
@interface AppDelegate()<CLLocationManagerDelegate>
{
UINavigationController *_navController;
CLLocationManager *_locationmanager;
}
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIApplication sharedApplication].idleTimerDisabled = TRUE;
_locationmanager = [[CLLocationManager alloc] init];
[_locationmanager requestAlwaysAuthorization]; //NSLocationAlwaysUsageDescription
[_locationmanager requestWhenInUseAuthorization]; //NSLocationWhenInUseDescription
_locationmanager.delegate = self;
}
这样在MAMapView的回调
[objc] view
plaincopy
-(void)mapView:(MAMapView*)mapView didUpdateUserLocation:(MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation
就可以正常获取用户当前位置了,此时userLocation.location是有值的。
相关文章推荐
- 在ios中使用opencv将彩色图片转换成为灰度图,uiimageview无法显示问题
- iOS使用UIPageViewController结合多个UITableView后点击状态栏无法让UITableView置顶问题
- Android使用WebView无法定位问题的解决方法
- iOS 使用 WKWebView 无法截获上、下手势的问题解决
- IOS UIScrollView中 使用 touch 无法响应的问题
- 关于华为手机使用高德地图无法定位的问题
- iOS开发-自定义TabBar使用popToRootViewControllerAnimated重叠问题解决
- iOS 7.0 使用定位requestAlwaysAuthorization导致crash的问题
- iOS 第三方框架管理cocoapods 关于Mac 10.11 系统升级无法使用的问题
- iOS UIScrollView的使用及其不能滑动问题解决
- webview中JavascriptInterface接口在release包中无法使用的问题
- iOS-UITabBar的使用包括选中前后使用不同的自定义颜色以及图标颜色的改变问题)imageView,titles
- iOS自定义TabBar使用popToRootViewControllerAnimated重叠问题解决
- 使用高德地图View遇到的奇怪问题
- 使用MJRefreshFooter引起的tableview第一行无法选中的问题
- 使用MFMailComposeViewController在iOS应用内编辑邮件使用方法及常见问题
- iOS 地图 MKWebView(在中国是使用高德地图)
- iOS7.0使用语音输入时包含未解析完成的语音时,点击发送清空textview产生crash问题
- iOS 开发 升级Mac OS X 10.12.1系统有线网和无线网无法使用的问题