相关疑难解决方法(0)

计算在叠加切片集之外"过度缩放"时要在MapRect中显示的切片

我正在开发一个应用程序,它使用MKOverlay视图在Google基本地图上叠加我自己的自定义地图.我一直在使用Apple优秀的TileMap示例代码(来自WWDC 2010)作为指南.

我的问题 - 当"overzoomed"到比我生成的tile集更深的细节级别时,代码不会显示任何内容,因为在计算的Z级别上没有可用的tile.

我想要的行为 - 当"过度使用"应用程序应该只是继续放大最深层次的瓷砖.叠加层变得模糊是一种很好的用户体验 - 叠加层消失是一种非常糟糕的体验.

这是返回要绘制的图块的代码 - 我需要弄清楚如何修改它以限制Z深度,而不会破坏为叠加图块计算的帧的缩放.有什么想法吗???


- (NSArray *)tilesInMapRect:(MKMapRect)rect zoomScale:(MKZoomScale)scale
{
    NSInteger z = zoomScaleToZoomLevel(scale);

    // PROBLEM: I need to find a way to cap z at my maximum tile directory depth.

    // Number of tiles wide or high (but not wide * high)
    NSInteger tilesAtZ = pow(2, z);

    NSInteger minX = floor((MKMapRectGetMinX(rect) * scale) / TILE_SIZE);
    NSInteger maxX = floor((MKMapRectGetMaxX(rect) * scale) / TILE_SIZE);
    NSInteger minY = floor((MKMapRectGetMinY(rect) * scale) / TILE_SIZE); …
Run Code Online (Sandbox Code Playgroud)

overlay tiles mapkit mkmapview ios

10
推荐指数
1
解决办法
6973
查看次数

防止叠加在缩放时消失 - MKMapView和MKOverlay

我正在使用通过MKMapView和MKOverlay使用半透明平铺地图覆盖的iPhone/iPad应用程序.

我希望用户能够深入放大地图,但我的地图叠加层的分辨率只能达到6级.

我不想限制缩放.

但是......如果用户缩放"太远"然后滚动到新的图块,如果它们比覆盖图块树更深,则不会绘制我的叠加.

我希望即使在用户放大深度时也可以绘制叠加层.

有没有最佳实践来实现这一目标?

我提出的两个选项:

1)设置用户可以缩放的范围限制.不理想,因为即使叠加是低分辨率,它们仍可能在透明的彩色范围内,并且透明的覆盖层看似消失是误导性的.

2)预渲染瓷砖比其他方式更深入...这样可行,但它会使我的应用程序的尺寸增加一个数量级.

必须有一个更好的方法.有任何想法吗???

更新:我能找到的最接近的示例代码是来自WWDC 2010的Apple的TileMap示例.他们的代码遇到了同样的问题 - 如果放大"太远",则不会显示地图叠加层.

iphone overlay tiles mkmapview

6
推荐指数
1
解决办法
4247
查看次数

标签 统计

mkmapview ×2

overlay ×2

tiles ×2

ios ×1

iphone ×1

mapkit ×1