您的位置:首页 > 移动开发 > IOS开发

iOS百度地图 定位的实现

2014-04-22 14:18 381 查看



在初始化地图的时候,也就是在viewDidload里面是这样的

[java] view
plaincopy

mapView.showsUserLocation = YES;

if (mapView.userLocation.location != nil)

{

NSLog(@"定位成功");

coor = [[mapView.userLocation location] coordinate];

NSLog(@"%f",coor.latitude);

NSLog(@"%f",coor.longitude);

}

BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(coor, BMKCoordinateSpanMake(0.02f,0.02f));

BMKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];

[mapView setRegion:adjustedRegion animated:YES];

一直以为是这样的呢,因为设定了showUserLocation 在去取到当前的userLocation就好了呢,这样做是不会立马就定位到的,它内部的实现是在子线程去定位,

然后通过代理方法去更新当前的用户位置的,好晕啊,仔细一找 ,就找到了这个更新用户当前位置的代理方法

[java] view
plaincopy

/**

*用户位置更新后,会调用此函数

*@param mapView 地图View

*@param userLocation 新的用户位置

*/

- (void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation;

那么就去实现它好了,这个时候应该是定位到了用户的位置了,也就是这个userLocation了

[java] view
plaincopy

#pragma mark mapViewDelegate 代理方法

- (void)mapView:(BMKMapView *)mapView1 didUpdateUserLocation:(BMKUserLocation *)userLocation

{

BMKCoordinateRegion region;

region.center.latitude = userLocation.location.coordinate.latitude;

region.center.longitude = userLocation.location.coordinate.longitude;

region.span.latitudeDelta = 0.2;

region.span.longitudeDelta = 0.2;

if (mapView)

{

mapView.region = region;

NSLog(@"当前的坐标是: %f,%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

}

}

总结

实现定位必须
1.初始化mapview
2.设置mapview的showUserLocation的属性为YES
3.去实现didUpdateUserLocation代理来实现当前位置显示在可视范围内
http://blog.csdn.net/fanjunxi1990/article/details/9131003
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: