使用 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
,您将不会获得此起始信息:
在我添加 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
,您将不会获得此起始信息: