iphone map(地图)的实现

使用GPS定位系统,可以精确地定位你当前所在的地理位置,但由于GPS接收机需要对准天空才能工作,因此在室内环境基本无用。

另一个找到自己所在位置的有效方法是使用手机基站,手机开机时,它会与周围的基站保持联系,如果你知道这些基站的身份,就可以使用各种数据库(包含基站的身份和它们的确切地理位置)计算出手机的物理位置。基站不需要卫星,和GPS不同,它对室内环境一样管用。但它没有GPS那样精确,它的精度取决于基站的密度,它在基站密集型区域的准确度最高。

  第三种方法是依赖Wi-Fi,使用这种方法时,设备连接到Wi-Fi网络,通过检查服务提供商的数据确定位置,它既不依赖卫星,也不依赖基站,因此这个方法对于可以连接到Wi-Fi网络的区域有效,但它的精确度也是这三个方法中最差的。

       提示:第一代iPhone并没有配置GPS接收器,基站方式不能应用到iPod Touch上,因为它不是手机。

       在iPhone上,苹果提供了定位框架内核,以帮助你确定你的物理位置,这个框架的美妙之处在于它使用了前面提到的所有三种方法,具体使用的是哪种方法对于开发者来说是透明的,开发人员只需要指定所需要的精度,定位内核将会以最佳方式确定定位结果。iPhone SDK的定位内核框架让你可以很容易实现基于位置的设备,此外,MapKit(包括在iPhone SDK中)可以在地图上显示位置信息。

涉及到的核心组件:CoreLocation;CLLocationManager;MapKit

       在Xcode中框架组上点击右键,增加两个新的框架MapKit.framework和CoreLocation.framework。

获取坐标:CoreLocation

       为了能让系统知道你的位置,必须要让它知道你的坐标,因此我们首先要做的就是获取到你当前位置的坐标。

       先要在你的头文件中申明CLLocationManager,CLLocationManager是用来实现获取坐标等一系列功能的类。若要使用CLLocationManager类,需要在你的视图控制器类中实现CLLocationManagerDelegate协议

       在使用对象之前,你应该检查用户是否开启了设备的定位服务。实现CLLocationManager的实例。在实现其实例的时候必须分配delegate,desired accuracy,和distance filter属性和实现StartUpdatingLocation方法。你可以使用desiredAccuracy属性指定想要的精度,使用下面的常量指定想要的精度:(kCLLocationAccuracyBest;kCLLocationAccuracyNearestTenMeters;kCLLocationAccuracyHundredMeters;kCLLocationAccuracyKilometer;kCLLocationAccuracyThreeKilometers)。distanceFilter属性让你指定设备必须移动多少距离位置信息才会更新,这个属性的单位是米。如果你想得到所有移动的通知,可以使用kCLDistanceFilterNone常量。最后,使用startUpdatingLocation方法启动位置管理器。

       接下来获取位置信息。要获得位置信息,需处理下面两个事件:

1.         locationManager:didUpdateToLocation:fromLocation:

2.         locationManager:didFailWithError:

当获得一个新的定位值时,设备触发locationManager:didUpdateToLocation:fromLocation:事件,如果位置管理器不能确定位置信息,就会触发locationManager:didFailWithError:事件。当设备可以确定位置时,你可能想显示经纬度值和精度,这时你可以使用CLLocation对象,它的horizontalAccuracy属性可以指定精度范围,单位是米。

显示地图:MapKit

       iPhone 3.0 SDK包括了Map Kit API,它可以让你在程序中显示Google Map。

       当视图载入时创建一个MKMapView类的实例,设置显示的地图类型。

  当位置信息得到更新时,使用mapView对象的setRegion:方法放大地图。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值