在iPhone中直接调用系统自带的地图程序实现导航
2010-10-13 02:03:00 来源:本站整理在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是起始地址,可以是具体地名,形式为国家,省份,城市,地名,也可以是经纬度,形式为经度,维度。
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››iPhone版PPS走进生活 观赏体验媲美PC版
- ››调用已注册会员人数和最新会员名称
赞助商链接