ed:NO];
显示效果如下:
墨卡托坐标点
如果需要展示多个墨卡托坐标点,可以使用地图 SDK 提供的与上述方法对应的 QBoundingMapRectWithPoints(QMapPoint *points, NSUInteger count)
和 - (void)setVisibleMapRect:(QMapRect)mapRect edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
等方法。
折线与覆盖物
当我们想在地图中展示路线或者覆盖物时,即地图 SDK 中的 QPolyline
QPolygon
和 QCircle
,我们可以直接获得他们的属性 boundingMapRect
再进行设置即可。
指定区域包含多个标注
在很多场景下,我们需要在地图上添加标注点 (Annotation) 并且自定义这些标注的 Image,如下所示:
我们可以通过下面的代码来使这些标注刚好显示在地图视野内:
// 计算包含 Annotation 与 MapRect 的外接矩形
QMapRect rect = [self.mapView mapRectThatFits:QMapRectNull containsCalloutView:NO annotations:self.annotations edgePadding:UIEdgeInsetsZero];
// 设置区域
self.mapView.visibleMapRect = rect;
显示效果如下:
当标注显示 Callout View 时,我们可以通过传入参数 bContainsCalloutView
为 YES 来将 Callout View 包含在地图视野内,显示效果如下:
有时我们需要指定区域同时包含当前的屏幕视野以及所有的标注,我们可以通过传入第一个参数 mapRect
为 self.mapView.visibleMapRect
来达到我们想要的效果。
限制展示指定的区域
当我们需要限制地图视野,使其只显示我们指定的区域时,以故宫举例,可以通过如下的代码进行设置:
CLLocationCoordinate2D coordinates[4];
// 故宫范围矩形的四个顶点的经纬度坐标
coordinates[0] = CLLocationCoordinate2DMake(39.922878,116.391547);
coordinates[1] = CLLocationCoordinate2DMake(39.912917,116.392100);
coordinates[2] = CLLocationCoordinate2DMake(39.913312,116.402507);
coordinates[3] = CLLocationCoordinate2DMake(39.923277,116.402024);
// 计算区域外接矩形
QCoordinateRegion region = QBoundingCoordinateRegionWithCoordinates(coordinates, 4);
// 计算平面投影矩形
QMapRect rect = QMapRectForCoordinateRegion(region);
// 限制展示区域
[self.mapView setLimitMapRect:rect mode:QMapLimitRectFitWidth];
显示效果如下: