WEB开发网
开发学院手机开发iPhone 开发 在iPhone中直接调用系统自带的地图程序实现导航 阅读

在iPhone中直接调用系统自带的地图程序实现导航

 2010-10-13 02:03:00 来源:本站整理   
核心提示:在iPhone中直接调用系统自带的地图程序实现导航在一个国外iPhone外包项目中,需要实现一个GPS功能:将当前所在地和目的地进行导航,在iPhone中直接调用系统自带的地图程序实现导航,GPS定位的话,iPhone中容易实现,形式为国家,省份,城市,地名,也可以是经纬度,通过CLLocationManager对象可

在iPhone中直接调用系统自带的地图程序实现导航

在一个国外iPhone外包项目中,需要实现一个GPS功能:将当前所在地和目的地进行导航。GPS定位的话,iPhone中容易实现,通过CLLocationManager对象可以实现当前位置定位,而实现地图导航功能就有点麻烦,在开发初期,我们采用的是UIWebView加载 Google地图,然后调用其API来实现,但是导航效果不是很理想,相关的API详见:http://code.google.com/intl/zh-CN/apis/maps/documentation/mapplets/reference.html

后来在AppStore下载到一个GPS相关的程序,发现里面的导航功能,直接是调用iPhone自带的地图程序,所以通过查找相关资料,实现了此功能,具体的代码片段如下:

用XCode打开工程,在Frameworks中添加CoreLocation.Framework

在ViewController类的头文件中:

#import

.....

CLLocationManager *locmanager;

....

当然这个类要实现CLLocationManagerDelegate 代理,在按钮点击事件中,初始化CLLocationManager:

locmanager = [[CLLocationManager alloc] init];

//欢迎光临作者小站,手机主题 http://www.shouji138.com

[locmanager setDelegate:self];

[locmanager setDesiredAccuracy:kCLLocationAccuracyBest];

[locmanager startUpdatingLocation];

在取得GPS定位信息之后,将当前位置的经纬度信息通过参数的形式传递给地图程序。

- (void)locationManager:(CLLocationManager *)manager

didUpdateToLocation:(CLLocation *)newLocation

fromLocation:(CLLocation *)oldLocation

{

[manager stopUpdatingLocation];

CLLocationCoordinate2D loc = [newLocation coordinate];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",loc.latitude,loc.longitude,@"中国,湖南,长沙,具体地名"]]];

//欢迎光临作者小站,手机主题下载 http://www.shouji138.com

}

其中saddr是起始地址,可以是具体地名,形式为国家,省份,城市,地名,也可以是经纬度,形式为经度,维度。

1 2  下一页

Tags:iPhone 直接 调用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接