小编Smi*_*ith的帖子

自定义MKOverlayView /未修改的MKPolygonView在特定缩放级别被剪裁

我有一个问题,当有多个叠加添加到地图时,自定义MKOverlayView和标准MKPolygonView被剪裁在某些缩放级别.

阿尔及利亚在两个双击缩放级别的叠加.

阿尔及利亚在三个双击缩放级别的叠加.注意剪辑.

一些观察:

  • 无论我是否使用自定义MKOverlayView或返回具有相同多边形的MKPolygonView,都会发生这种情况.
  • 如果我只绘制一个叠加层,则不会出现此问题.
  • 所有叠加层都不会出现这种情况 - 只有一些.

就代码而言:这会将叠加层添加到NSMutableArray(borderOverlays),然后在其他位置访问以加载特定国家/地区ID的叠加层.minX/minY/maxX/maxY是纬度/经度值; polygon是从ESRI shapefile构造的路径.

CLLocationCoordinate2D mbrMin = CLLocationCoordinate2DMake(minY, minX);
CLLocationCoordinate2D mbrMax = CLLocationCoordinate2DMake(maxY, maxX);
MKMapPoint minPoint = MKMapPointForCoordinate(mbrMin);
MKMapPoint maxPoint = MKMapPointForCoordinate(mbrMax);
MKMapSize size = MKMapSizeMake(maxPoint.x - minPoint.x, maxPoint.y - minPoint.y);
MKMapRect rect = MKMapRectMake(minPoint.x, minPoint.y, size.width, size.height);

if ( spans180 ) {
    rect = MKMapRectMake(minPoint.x, minPoint.y, MKMapSizeWorld.width * 2, size.height);
}

CustomMKOverlay* overlay = [[CustomMKOverlay alloc] initWithPolygon:polygon withBoundingMapRect:rect];
[borderOverlays addObject:overlay];
Run Code Online (Sandbox Code Playgroud)

叠加层通过以下方式添加到地图中:

[mapView addOverlay:overlay];
Run Code Online (Sandbox Code Playgroud)

viewForOverlay:

- (MKOverlayView *)mapView:(MKMapView*)aMapView viewForOverlay:(id<MKOverlay>)overlay
{
    if ( …
Run Code Online (Sandbox Code Playgroud)

objective-c mapkit ios

5
推荐指数
1
解决办法
729
查看次数

标签 统计

ios ×1

mapkit ×1

objective-c ×1