天天看点

google地图定位小Demo

        好几天没写博客了,今天写的是一个简单功能的google地图小demo,因为模拟器定位的经纬度默认设置为苹果公司地址,在调试--》位置  里可以修改地图的其他位置定位

测试效果

       实现地图定位我们需要两个类

CLLocationManager  和CLLocation

1.首先需要一个位置管理器,CLLocationManager对象locationManager,CLLocationManager *locationManager;

设置委托   locationManager.delegate =self;

2.设置精度   locationManager.desiredAccuracy =kCLLocationAccuracyBest;

desiredAccuracy类型double,因此我们可以指定他的精度为一个确却数据比如10,但是事件不能计算那么准确,或者由于其他原因都达不到我们所设置进度,因此我们指定为kCLLocationAccuracyBest表示级别最高精度,还有其他精度

3.设置距离筛选器   locationManager.distanceFilter =100;

距离筛选器,作用是当你移动一段位移后,所以移动距离大于筛选器说设置100m时候,通知委托更新位置;

但是位置一段更新过于频繁就会消耗电池电量,我们可以返回它的默认的没有筛选器模式,使用常量kCLDistanceFilterNone;

 locationManager.distanceFilterkCLDistanceFilterNone

4.然后就是启动 位置管理器进行定位[locationManagerstartUpdatingLocation];  如果我们不需要继续轮询更新位置可以使用[locationManager stopUpdatingLocation];停止更新,否则应用程序打开会一直更新,这些都需要添加委托的,遵循

CLLocationManagerDelegate协议

5.为了显示确实却是进行了定位,我们获取定位的经纬度,显示到label上,然后就是用到了CLLocation类,他有五个属性

latitude经度    longitude纬度    horizontalAccuracy水平精度(map中显示的蓝色圆半径都是以它为半径的)  altitude海拔高度

verticalAccuracy  竖直高度(为负值得时候表示无法确定高度)

6.显示定位的实况地图

需要设置显示区域和显示比例,他们是两个结构体,MKCoordinateSpan  ,MKCoordinateRegion

MKCoordinateRegion定义

typedef struct{

      CLLocationCoordinate2D center;//表示显示的中心

      MKCoordinateSpan span;       //表示比例

}MKCoordinateRegion;

MKCoordinateSpan定义:

    CLLocationDegrees latitudeDelta;//这类型在前一节中讲过了,是double型的

    CLLocationDegrees longitudeDlta;

}MKCoordinateSpan;

7.通过 region.center = newLocation.coordinate;获取定位的经纬度,然后显示到MKMapView,通过

UISegmentedControl设计了一个按钮集合来切换三种不同地图

首先我们要在工程添加支持定位和显示地图的库

CoreLocation.framework 和 MapKit.framework 添加两个头文件,对应代码

通过按钮跳转视图,显示地图

切换google三种地图显示

     本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1208781,如需转载请自行联系原作者

继续阅读