在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实用工具AppBox Pro使用教程大揭秘
- ››iphone4省电方法
- ››iphone 获取地址的详细信息
- ››iPhone 库的基本内存管理策略
- ››iPhone加密文字亲手做 私密信息有保障
- ››iphone 根据经纬度坐标取详细地址(包括国,省,市...
- ››iphone/ipad ios cocoa object-c 近期苹果UI部分小...
- ››iphone中如何进行多线程编程
- ››iPhone OS SDK的这些事[安装、下载、版本、实例、...
- ››iPhone ObjectC的NSAutoreleasePool
- ››iPhone 判断设备是在Portrait(纵向)还是(Landscap...
更多精彩
赞助商链接