IOS学习之十二:Core Location定位和MapKit视图使用
iPhone中的基于位置服务开发的应用其实挺多的。
但是那种能显示密集型周边的信息或者说是资料数据的应用,
还真不知道是通过的是类似于webService还是内置类似于地图导航功能的数据包。
但是对于简单如何上手这方面的开始,我们还是要接触下的。
总的来说,我们这类应用的会涉及到核心的两块内容。
1.位置定位(最简单就是当前应用所有者所持设备的地理位置),主要用到的API类 CLLicationManager。
在其他比如(Android位置类开发),我们知道实现定位的方式有gprs,网络,蜂窝式,基站等。并且是可以通过自己选的。
ios中就却直接hide或者说是简单化了这种定位方式。
只需我们设置一些参数后,系统自动会做出最切当的反应。
2.位置确定了,那么下一步就是显示给用户了。显示的视图,这边用到API类MapKit。
比如我们定位了一个经度 30.002,纬度为199.232.最简单的,我们直接在提供的视图上定位到这个点。
但是我们知道,更多的时候,我们希望显示这个点的更多数据信息(比如街道,XXX路),更甚至是周边的。
这个就需要庞大的数据包支持了,因为我没做过这方面的,只是简单知道可以通过google公开的一个web端接口获取数据。
一:首先简单介绍下CLLicationManager类的常用
开启定位服务:
[cpp]
self.locationManager = [[CLLocationManager alloc]init];
if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位不可用~");
}else {
//设置代理
[self.locationManager setDelegate:self];
//设置精准度,
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[self.locationManager startUpdatingLocation];
}
初始化了位置管理器,判断设备的定位功能是否开启开启的话设置代理,精度等参数后,开始服务。
实现代理类方法,获取返回参数:
[cpp]
#pragma mark-
#pragma locationManagerDelegate methods
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
self.coordinate = [newLocation coordinate];
self.altitude = [newLocation altitude];
NSString *lat = [[NSString alloc] initWithFormat:@"%f",self.coordinate.latitude];
NSString *lon = [[NSString alloc] initWithFormat:@"%f",self.coordinate.longitude];
NSString *alt = [[NSString alloc] initWithFormat:@"%f",self.altitude];
//更新定位信息方法
NSLog(@"delegate %f,%f",self.coordinate.latitude,self.coordinate.longitude);
self.latitudeText.text = lat;
self.longitudeText.text = lon;
self.altitudeText.text = alt;
[lat release];
[lon release];
[alt release];
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
{
//定位失败
}
返回的一个CLLocation 类型包含常用的几种数据,经纬度,运动速率,海拔,方向等,我们可以按需要来获取。
二:用MapKit来显示
第一步就是添加一个mapView视图
然后也是很简单的几行代码即显示位置点。
对于将经纬度转化成友善的地理信息,首先我们来看个最传统的例子,既我们将获取的经纬度封装成一个网络请求到goo
相关新闻>>
- 发表评论
-
- 最新评论 更多>>