我只是重写MKOverlay,所以我正在寻找Apple开发人员示例代码中的良好实践... 当我看到这个:
// bite off up to 1/4 of the world to draw into.
MKMapPoint origin = points[0];
origin.x -= MKMapSizeWorld.width / 8.0;
origin.y -= MKMapSizeWorld.height / 8.0;
MKMapSize size = MKMapSizeWorld;
size.width /= 4.0;
size.height /= 4.0;
boundingMapRect = (MKMapRect) { origin, size };
MKMapRect worldRect = MKMapRectMake(0, 0, MKMapSizeWorld.width, MKMapSizeWorld.height);
boundingMapRect = MKMapRectIntersection(boundingMapRect, worldRect);
此致
修改
所以我只想这样做?
// set the smallest rectangle which able to contain this overlay
MKMapPoint leftTopPoint = MKMapPointForCoordinate(leftTopCorner);
MKMapPoint rightBottomPoint = MKMapPointForCoordinate([self bottomRightCoord]);
boundingMapRect = MKMapRectMake(leftTopPoint.x, leftTopPoint.y,
fabs(leftTopPoint.x - rightBottomPoint.x),
fabs(leftTopPoint.y - rightBottomPoint.y));
答案 0 :(得分:1)
该代码来自Breadcrumb示例,与大多数叠加相比,它可能有点不寻常,因为它是动态更新的。它们实际上将边界区域设置为世界区域的四分之一,这本身有点不寻常,通常你会期望它要小得多。我认为交叉点只是为了确保生成的rect肯定在整个世界中。我不确定除非你做类似的事情(即创建动态叠加层),否则我建议将此代码作为最佳实践。据推测,如果您在世界各地不停地飞行时运行面包屑应用程序,或者甚至只是越过国际日期线,这个代码甚至可能会被抓住......