gpt4 book ai didi

ios - MKOverlayPathView 需要 drawMapRect 吗?

转载 作者:行者123 更新时间:2023-12-01 16:50:17 25 4
gpt4 key购买 nike

我在修改 Breadcrumb 示例时遇到了一些不一致之处,以使 CrumbPathView 从 MKOverlayPathView 子类化(就像它应该的那样),而不是从 MKOverlayView 子类化。

麻烦的是,文档在说明如何实现这两个方面的差异方面受到限制。对于 MKOverlayPathView 的子类,建议使用:

- createPath
- applyStrokePropertiesToContext:atZoomScale:
- strokePath:inContext:

但这是代替drawMapRect,还是补充?如果加上它似乎没有多大意义,因为两者都将用于类似的实现。但是使用它而不是 drawMapRect,会使线条变得断断续续。

努力寻找任何现实世界的子类化 MKOverlayPathView 的例子......有什么意义吗?

更新 - 从 drawMapRect 修改代码,应该工作:
- (void)createPath
{
CrumbPath *crumbs = (CrumbPath *)(self.overlay);

CGMutablePathRef newPath = [self createPathForPoints:crumbs.points
pointCount:crumbs.pointCount];

if (newPath != nil) {
CGPathAddPath(newPath, NULL, self.path);
[self setPath:newPath];
}

CGPathRelease(newPath);
}


- (void)applyStrokePropertiesToContext:(CGContextRef)context atZoomScale:(MKZoomScale)zoomScale
{
CGContextSetStrokeColorWithColor(context, [[UIColor greenColor] CGColor]);

CGFloat lineWidth = MKRoadWidthAtZoomScale(zoomScale);
CGContextSetLineWidth(context, lineWidth);

CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetLineCap(context, kCGLineCapRound);
}


- (void)strokePath:(CGPathRef)path inContext:(CGContextRef)context
{
CGContextAddPath(context, path);
CGContextStrokePath(context);

[self setPath:path];
}

这绘制了一条初始线,但无法继续该线......它没有添加路径。我已经确认 applyStrokePropertiesToContext 和 strokePath 在每个新位置都会被调用。

这是产生的虚线的屏幕截图(它为 createPath 绘制,但之后没有绘制):

Breadcrumb example with createPath instead of drawMapRect

这是 createPath 中包含 drawMapRect 时发生的“断断续续”路径的屏幕截图:

Broken map path

最佳答案

我猜没有看到更多你的代码,但是这里有。

我怀疑这条路径被分成几段,A->B,C->D,E->F,而不是一 strip 有点 A、B、C、D、E 和 F 的路径。为了确保我们会需要看看 self.overlay 发生了什么以及它是否在任何时候被重置。

strokePath你设置self.path成为被抚摸的那个。我怀疑这是一个好主意,因为抚摸可能随时发生,就像 viewForAnnotations .

至于断断续续,它可能是苹果的副作用或边界计算不佳。如果您喜欢在 Apple 用来覆盖 map 的图 block 边界附近结束,它可能只会提示 map 绘制线所在的图 block 。但是您的笔划宽度会延伸到尚未绘制的相邻图 block 中。我再次猜测,但您可以通过将“Queen St W”中 W 以北的点向南移动一小部分来测试这一点,或者通过增加笔划宽度并查看截止线是否保持在同一个地方地理上。

关于ios - MKOverlayPathView 需要 drawMapRect 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com