iOS8 高德地图SDK MAMapView无法定位的问题

在iOS8的设备上,使用高德地图SDK你会发现MAMapView里的回调位置是空的。

-(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私有变量,代码如下:

@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的回调

-(void)mapView:(MAMapView*)mapView didUpdateUserLocation:(MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation

就可以正常获取用户当前位置了,此时userLocation.location是有值的。

时间: 2024-10-17 13:29:33

iOS8 高德地图SDK MAMapView无法定位的问题的相关文章

ios开发--高德地图SDK使用简介

高德LBS开放平台将高德最专业的定位.地图.搜索.导航等能力,以API.SDK等形式向广大开发者免费开放.本章节我们来简单学习一下如何使用它的定位及地图SDK. 一.相关框架及环境配置 地图SDK 对于如何下载SDK,它的官方文档提供了很详细的说明,使用CocoaPods.如果你没有安装CocoaPods,也可以在它的官网直接下载. 接下来只需要将SDK引入工程,完成相关的环境配置即可.在它的官方文档中有详细说明,这里就不重复了. 地图SDK文档 定位SDK 高德 iOS 定位 SDK 提供了不

Android 快速掌握高德地图SDK(内含实践项目)

上周学习了高德地图和极光推送的SDK,需要在项目中用到,不过学习起来还是费了一番功夫去看文档和Demo代码的.(不得不吐槽部分文档真的无厘头,只有简单的实例程序注释都没有,上下文还不对接,真是醉了),所以打算把最直白的步骤写在博客中,也希望能帮到还不会用这两种SDK的小伙伴们,少走弯路,提高工作效率. 本文主要介绍高德地图SDK的使用步骤: 包括从获取Key,到导包,到布局文件,以及编码实现. 还有两个最常用的功能: 实现定位自身. 根据地名或者坐标实现搜索定位并显示小蓝点. 一.获取高德Key

高德地图SDK使用经验

下文说的是高德地图 Android SDK版本,详细版本如下: 2D地图:v2.3.1 定位:v1.3.0 导航:v1.1.1 发现的问题如下,其中一些疑是地图BUG,一些是需要你自己小心的地方: 1.定位. public void requestLocationData(java.lang.String provider, long minTime, float minDistance, AMapLocationListener listener) 对于第二个参数,会影响所有回调接口的回调时间

高德地图SDK使用教训

下文说的是高德地图 Android SDK版本,详细版本如下: 2D地图:v2.3.1 定位:v1.3.0 发现的问题如下,其中一些是地图BUG,一些是需要你自己小心的地方: 1.定位. public void requestLocationData(java.lang.String provider, long minTime, float minDistance, AMapLocationListener listener) 对于第二个参数,会影响所有回调接口的回调时间.官方的邮件回复是说,

Android6.0使用BaiDu地图SDK动态获取定位权限

1.报错原因: 在集成百度地图SDK的时候在手机上无法定位,检查没有任何错误,最后通过搜索才知道是Android版本为6.0的问题,这是因为在Android6.0采用了运行时权限(RuntimePermissions),Android6.0的权限一般分为两种,一种时普通权限,可以直接获取,其它的运行时权限,需要提示用户手动同意之后,才能获取. 失败的原因就是,小米手机MIUI是Android6.0.1,如果不加动态获取权限的代码,是不会提示的,没有得到权限,当然无法定位. 2.解决代码: pri

安卓开发—导入高德地图sdk后工程中无法找到相应的包

声明:本人小白,刚刚学习安卓开发,以下是自己开发中遇到的一些问题,将解决方法贴出来供大家参考,求大神勿喷-- 想学习使用高德地图的API,从官网下载了相应的sdk,按照参考文档的方法将相应的地图包,搜索包导入libs文件夹,以及进行了相关配置,我确信我真的是一步步来的没有错-- 然而,我在编写代码的时候,却根本没有这个包!!!! 为此,我几乎花了三天下午的时间找各种原因还是没有找到   = =|||  (不要喷我!!!) 也试了各种从网上查的方法,不过没有效果,最后还是自己找出来的-- 解决方法

【高德地图SDK】如何实现轨迹平滑移动?

很多人应该都有类似的经历,叫完车,想看看车离我还有多远距离?但手机屏幕上的车不是一动不动,就是一跳一跳的漂移. 目前市面上大多产品“轨迹平滑移动”做的并不好. 市面上只有快的打车和一号专车实现了平滑移动,那么这是怎么做的呢? ------------------------------------------------------------------------------------------------------- iOS轨迹平滑 点击,查看Demo及源代码 iOS_MovingA

高德地图SDK大致使用

1,我们先申请一个appkey,申请appkey必须注册高德开发者 2,高德SDK的下载,现在SDK分别有三个库,根据你的app 里面的集成需求,可以选择性的下载添加到自己的工程里,他们分别是 2D地图库,3D地图库,还有搜索库: 3,添加SDK进自己的项目(工程)里,添加的时候注意路径问题,添加完高德SDK之后,我们还需要添加一些系统自带库,有了这些才能支持高德SDK的运行,他们分别如下图 4,运行环境的配置,在TARGETS->Build Settings->Other Linker Fl

android: 在APP中显示高德地图SDK

一.搭建环境 参考资料:http://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project 1)新建一个工程: 2)到高德开放平台申请key,可以参考:http://lbs.amap.com/api/android-sdk/guide/create-project/get-key 3)在AndroidManifest.xml的application标签内添加 <meta-data andro