1

我正在开发一个使用 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 会更新用户的当前位置,并且地图会使用以用户当前位置为中心且具有相同跨度的新区域来更改其区域。现在我遇到了另一个问题:当我按下按钮时,地图会移动到正确的坐标,但它也会缩小(换句话说,跨度会增加),即使我用旧跨度创建了一个新区域。我无法理解这种行为,我想像地图应用程序一样保留旧的跨度。

4

2 回答 2

0

地图上的那个按钮正在切换userTrackingModemapView 上的属性,所以将其设置为以下之一:

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
于 2013-07-06T08:51:15.500 回答
0

如果您想为此使用官方 iOS 按钮,此代码会将其添加到您的 UIToolbar 并将其连接到您的地图视图

UIBarButtonItem *trackingButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.mapView];
NSMutableArray *items = [[NSMutableArray alloc] initWithArray:self.toolbar.items];
[items addObject:trackingButton];
[self.toolbar setItems:items];
于 2013-07-06T10:50:52.653 回答