使用 MBXMapkit (Mapbox) 以用户位置为中心的地图

Centering map on user location with MBXMapkit (Mapbox)

在我添加 MapBox 之前,我让 MapKit 在加载时加载到用户位置的代码工作正常。

我正在通过

初始化MBXRasterTileOverlay* rasterOverlay
-(void)loadMapBox{

_rasterOverlay = [[MBXRasterTileOverlay alloc] initWithMapID:@"myKey"];
_rasterOverlay.center = _mapView.userLocation.coordinate;

}

但是我收到一个编译器错误,提示 _rasterOverlay.center 是只读的。有什么方法可以通过编程方式在用户位置加载叠加层,而不是从 MapBox studio 加载地图的预定义中心?

原来 MapBox 有一个特殊的委托,无论何时向地图添加注释,它都会以它们为中心。注释掉 else 行有效

- (void)tileOverlay:(MBXRasterTileOverlay *)overlay didLoadMetadata:(NSDictionary *)metadata withError:(NSError *)error
{
// This delegate callback is for centering the map once the map metadata has been loaded
//
if (error)
{
    NSLog(@"Failed to load metadata for map ID %@ - (%@)", overlay.mapID, error?error:@"");
}
else
{
//        [_mapView mbx_setCenterCoordinate:overlay.center zoomLevel:overlay.centerZoom animated:NO];
  }
}

执行此操作的权威方法是通过 includeMetadata:NO,您将不会获得此起始信息:

https://www.mapbox.com/mbxmapkit/api/Classes/MBXRasterTileOverlay.html#//api/name/initWithMapID:includeMetadata:includeMarkers: