ios 8地图定位服务问题
2014-09-17 11:06
330 查看
1、ios 8地图定位出现的问题
项目工程里,需要做一个地图的定位,就是定位附近最近的某个点的位置。并在地图上标示出来。
以前的ios 7版本下的地图定位,在ios 8环境下失去了效果。查看下文档,发现ios 8新增了以下方法;
- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
分为以下几步来解决这个问题:
第一步:
location = [[CLLocationManager alloc]init];
location.delegate=self;
[locationrequestAlwaysAuthorization];
第二步:在工程的.plist中添加以下两个字段,如下:(必须有,最少一个,内容是系统ALert的文言,文言可为空)
第三步:在代码中如果直接调用[location requestAlwaysAuthorization];在Xcode 5.0以及5.1版本会出现报错,因为之前没有这个requestAlwaysAuthorization方法,所以在编译时就会报以下错误。说明在ios 8之前CLLocation这个方法根本就没定义这个方法。所以,直接在代码中调用,会导致你在Xcode 5.0的版本编译不过。
经过一番尝试,采取以下方法来缓解这个问题:
首先采取预编译的方法,来解决编译错误:
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
#define RequestAlwaysAuthorization(a) [a requestAlwaysAuthorization]
#else
#define RequestAlwaysAuthorization(a) ((void)0)
#endif
在代码中,实现如下,来解决运行问题;
if (wOsversion >= 8.0)
{
//设置定位权限,仅ios8有意义
[RequestAlwaysAuthorization(locationManager);
}
采取以上方法之后,我在xcode 5.1以及xcode 6 beta均可以编译运行通过。
2、参考资料
https://github.com/intuit/LocationManager
http://www.cocoachina.com/bbs/simple/?t217107.html
http://www.cocoachina.com/ask/questions/show/116838
https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW26
项目工程里,需要做一个地图的定位,就是定位附近最近的某个点的位置。并在地图上标示出来。
以前的ios 7版本下的地图定位,在ios 8环境下失去了效果。查看下文档,发现ios 8新增了以下方法;
- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
分为以下几步来解决这个问题:
第一步:
location = [[CLLocationManager alloc]init];
location.delegate=self;
[locationrequestAlwaysAuthorization];
第二步:在工程的.plist中添加以下两个字段,如下:(必须有,最少一个,内容是系统ALert的文言,文言可为空)
第三步:在代码中如果直接调用[location requestAlwaysAuthorization];在Xcode 5.0以及5.1版本会出现报错,因为之前没有这个requestAlwaysAuthorization方法,所以在编译时就会报以下错误。说明在ios 8之前CLLocation这个方法根本就没定义这个方法。所以,直接在代码中调用,会导致你在Xcode 5.0的版本编译不过。
经过一番尝试,采取以下方法来缓解这个问题:
首先采取预编译的方法,来解决编译错误:
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
#define RequestAlwaysAuthorization(a) [a requestAlwaysAuthorization]
#else
#define RequestAlwaysAuthorization(a) ((void)0)
#endif
在代码中,实现如下,来解决运行问题;
if (wOsversion >= 8.0)
{
//设置定位权限,仅ios8有意义
[RequestAlwaysAuthorization(locationManager);
}
采取以上方法之后,我在xcode 5.1以及xcode 6 beta均可以编译运行通过。
2、参考资料
https://github.com/intuit/LocationManager
http://www.cocoachina.com/bbs/simple/?t217107.html
http://www.cocoachina.com/ask/questions/show/116838
https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW26
相关文章推荐
- IOS开发笔记之六——ios 8地图定位服务问题
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- iOS.定位服务与地图应用.04.使用iOS苹果地图
- iOS定位服务与地图开发(7)---使用本地化的百度地图
- ios系统地图无法定位问题
- iOS.定位服务与地图应用.03.地理信息编码查询
- iOS.定位服务与地图应用.07.调用谷歌Web地图
- iOS定位服务与地图开发(6)---使用程序外地图之调用谷歌Web地图
- iOS地图定位偏差问题解决(不同坐标系转化)
- iOS地图和定位服务(自定义大头针)
- iOS 关于iOS8地图定位问题
- iOS定位服务与地图开发(4)---显示地图
- iOS[地图定位问题]:求解地图定位问题!!!
- iOS经典讲解之地图定位请求位置信息时出现的问题
- iOS.定位服务与地图应用.01.定位服务编程
- iOS定位服务与地图开发(1)---获取经纬度
- iOS定位服务与地图开发(2)---地理信息反编码
- iOS地图定位设置问题详解