在屏幕内显示所有annotation
/***设置地图使显示区域显示所有annotations,如果数组中只有一个则直接设置地图中心为annotation的位置*@param annotations 指定的标注*@param animated 是否启动动画*/- (void)showAnnotations:(NSArray *)annotations animated:(BOOL)animated;
将当前polyline完整的显示在屏幕内
- (void)mapViewFitPolyLine:(BMKPolyline *) polyLine {CGFloat ltX, ltY, rbX, rbY;if (polyLine.pointCount < 1) {return;}BMKMapPoint pt = polyLine.points[0];ltX = pt.x, ltY = pt.y;//左上方的点lefttop坐标(ltX,ltY)rbX = pt.x, rbY = pt.y;//右底部的点rightbottom坐标(rbX,rbY)for (int i = 1; i < polyLine.pointCount; i++) {BMKMapPoint pt = polyLine.points[i];if (pt.x < ltX) {ltX = pt.x;}if (pt.x > rbX) {rbX = pt.x;}if (pt.y < ltY) {ltY = pt.y;}if (pt.y > rbY) {rbY = pt.y;}}BMKMapRect rect;rect.origin = BMKMapPointMake(ltX , ltY);rect.size = BMKMapSizeMake(rbX - ltX, rbY - ltY);//设置paddingUIEdgeInsets padding = UIEdgeInsetsMake(20, 10, 20, 10);[mapView fitVisibleMapRect:rect edgePadding:padding withAnimated:YES];}
用户可以通过BMKMapView的mapPadding属性来添加围绕地图边缘的内边距,设置后,地图仍充满整个屏幕,会根据mapPadding调整logo、比例尺、指南针的位置,以及地图中心点。默认为UIEdgeInsetsZero。
mapPadding设置示例代码如下:
// 表示距离屏幕上、左、下、右边距离,单位为屏幕坐标下的像素密度_mapView.mapPadding = UIEdgeInsetsMake(0, 0, 44, 0);
设置后效果如下:
用户可以通过BMKMapView的setVisibleMapRect方法设置地图显示范围,并使mapRect四周保留insets指定的边界区域。设置后地图继续充满整个屏幕,但地图会自动缩放地图层级,将地图覆盖物(Annotation、routeOverlay等) 调整在保留insets指定的边界区域内显示。适用于应用界面上、下方有UI界面遮挡, 将路线规划结果或者覆盖物显示在指定的地图范围内的需求。
设置地图显示范围示例代码如下:
//设定地图的显示范围,并使mapRect四周保留insets指定的边界区域[_mapView setVisibleMapRect:BMKMapRectMake(32995300, 35855667, 1300, 1900) edgePadding:UIEdgeInsetsMake(20, 0, 40, 0) animated:YES];
用户可以通过BMKMapView的limitMapRegion属性来限制地图显示范围,设置后手机屏幕仅显示设定的地图范围,当前不支持旋转地图的情况,请与"禁用旋转手势"配合使用。
使用场景:针对需要展示部分固定范围的地图,如希望设置仅显示北京市区地图,可使用此功能。
limitMapRegion设置示例代码如下:
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(39.924257, 116.403263);BMKCoordinateSpan span = BMKCoordinateSpanMake(0.038325, 0.028045);_mapView.limitMapRegion = BMKCoordinateRegionMake(center, span);////限制地图显示范围_mapView.rotateEnabled = NO;//禁用旋转手势
百度地图SDK支持设置底图POI的是否显示,用户可以通过BMKMapView的showMapPoi属性来控制地图标注是否显示,默认显示底图标注。利用此属性可得到仅显示道路信息的地图。
showMapPoi设置示例代码如下:
// 将底图标注设置为隐藏_mapView.showMapPoi = NO;
设置后效果如下:
百度地图SDK支持根据标签类型控制地图上POI标签的是否显示,用户可以通过BMKMapView的getPoiTagEnable接口来实现,默认全部显示。 相关接口
/// 用于控制poi标签显示的类别枚举typedef enum {kBMKPoiTagTypeAll, ///< 显示poi标签 / 屏蔽所有poi标签kBMKPoiTagTypeEpidemic, ///< 疫情标签kBMKPoiTagTypeTravel, ///< 旅游出行标签kBMKPoiTagTypeShop ///< 店铺标签}BMKPoiTagType;/// 是否展示底图poi标签 since 6.5.5/// @return bool- (BOOL)getPoiTagEnable:(BMKPoiTagType)poiTagType;/// 是否展示底图poi标签 since 6.5.5/// @param enable 是否展示/// @param poiTagType 标签类别- (void)setPoiTagEnable:(BOOL)enable poiTagType:(BMKPoiTagType)poiTagType;
使用方式:
/// 创建地图后设置,关闭地图上所有poi标签[_mapview setPoiTagEnable:NO poiTagType:kBMKPoiTagTypeAll];
效果对比图如下:
上一篇
下一篇
本篇文章对您是否有帮助?