很多人在开发谷歌地图的时候遇到这样的问题:
就是Mylocation的值一辈子都是为~nil的
上网查了基本都是然并卵的回答和方法
接下来我来给大家使用苹果系统自带的定位管理器和谷歌地图的适配
首先遵循协议:
<span style="font-size:14px;">@interface ViewController ()<CLLocationManagerDelegate>{
// 创建地图对象
GMSMapView * mapView_;
// 地图定位管理器
CLLocationManager * locManager_;
// 经纬度
float latitude;
float longitude;
}</span>
然后在viewdidload中初始化:
<span style="font-size:14px;">- (void)viewDidLoad {
[super viewDidLoad];
// 创建定位管理器
locManager_ = [[CLLocationManager alloc]init];
locManager_.delegate = self;
[locManager_ setDesiredAccuracy:kCLLocationAccuracyBest];
[locManager_ startUpdatingLocation];// 开始获取位置信息
}</span>
在遵循协议之后要做的就是使用代理方法:
<span style="font-size:14px;">- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// 通过locManager 得到当前的位置
CLLocationCoordinate2D loc = [newLocation coordinate];
latitude = loc.latitude;
longitude = loc.longitude;
// 创建谷歌地图对象
// 使用获取到的定位信息来构建初始化的定位位置
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude
longitude:longitude
zoom:12];
// 创建谷歌地图对象
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
// 室内地图开启
mapView_.indoorEnabled = YES;
// 允许显示我的位置以及圆形范围
mapView_.myLocationEnabled = YES;
self.view = mapView_;
// 把这个标记在地图上显示
marker.map = mapView_;
// 辅助工具开启
mapView_.accessibilityElementsHidden = NO;
// 设置地图的显示类型(暂定默认)
mapView_.mapType = kGMSTypeHybrid; // 卫星图片数据
// 停止更新地址,
[manager stopUpdatingLocation];
}</span><span style="font-size:24px;">
</span>
通过这个协议,当我们进入了自己做的谷歌地图之后,终于~~
终于可以进去就缩放到自己的定位
不过,狗血的是~~Mylocation的值还是为nil~~
但这个实现的过程和方法明确的给出了我们之后如何获取
地理经纬信息,为我们之后的开发做好了基础
本文原创,装载请标明发源地!!