我正在开发一个使用iOS 6 MKMap视图的应用程序,我想启用“用户位置按钮”(当您使用地图应用程序时,您在屏幕左下角看到的按钮) 。 我找不到任何可以帮助我的东西,所以我试着用这个代码自己制作这个按钮:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D currentCoordinates;
currentCoordinates.latitude = newLocation.coordinate.latitude;
currentCoordinates.longitude = newLocation.coordinate.longitude;
MKCoordinateRegion viewRegion = MKCoordinateRegionMake(currentCoordinates, _mapView.region.span);
[_mapView setRegion:viewRegion animated:YES];
[locationManager stopUpdatingLocation];
}
- (IBAction)moveToCurrentLocation:(id)sender {
[locationManager startUpdatingLocation];
}
因此,当我按下按钮时,locationManager会更新用户的当前位置,并且地图会使用以用户当前位置为中心且具有相同跨度的新区域更改其区域。 现在我还有另一个问题:当我按下按钮时,地图移动到右边的坐标,但它也会缩小(换句话说,跨度增加),即使我用旧跨度创建一个新区域。 我无法理解这种行为,我想像Map应用程序那样保留旧的范围。
答案 0 :(得分:0)
地图上的那个按钮切换了mapView上的userTrackingMode
属性,因此将其设置为以下其中一个:
MKUserTrackingModeNone //nothing, normal map view
MKUserTrackingModeFollow //user is highlighted and stays centered on map when you move
MKUserTrackingModeFollowWithHeading //you get the heading as well, so your direction is up on the map
答案 1 :(得分:0)
如果您想使用官方iOS按钮,此代码会将其添加到您的UIToolbar并将其连接到您的mapview
UIBarButtonItem *trackingButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.mapView];
NSMutableArray *items = [[NSMutableArray alloc] initWithArray:self.toolbar.items];
[items addObject:trackingButton];
[self.toolbar setItems:items];