我需要帮助才能在地图标注上绘制指针

您所在的位置:网站首页 怎样在origin里画两条线 我需要帮助才能在地图标注上绘制指针

我需要帮助才能在地图标注上绘制指针

#我需要帮助才能在地图标注上绘制指针| 来源: 网络整理| 查看: 265

那么,如果你正在寻找标注在顶部,请试试这个。使用以下标注泡替换路径:

//Determine Size rect = self.bounds; rect.size.width -= stroke + 14; rect.size.height -= stroke + 14 + CalloutMapAnnotationViewHeightAboveParent; rect.origin.x += stroke/2.0 + 7; rect.origin.y += stroke/2.0 + 7 + 14; //Create Path For Callout Bubble CGPathMoveToPoint(path, NULL, rect.origin.x, rect.origin.y + radius); CGPathAddLineToPoint(path, NULL, rect.origin.x, rect.origin.y + rect.size.height - radius); //Left line CGPathAddArc(path, NULL, rect.origin.x + radius, rect.origin.y + rect.size.height - radius, radius, 0.0f, M_PI/2, 1); //Bottom left arc // CGPathAddLineToPoint(path, NULL, parentX - 15, rect.origin.y + rect.size.height); //bottom to callout line // CGPathAddLineToPoint(path, NULL, parentX, rect.origin.y + rect.size.height + 15); //callout left // CGPathAddLineToPoint(path, NULL, parentX + 15, rect.origin.y + rect.size.height); //callout right CGPathAddLineToPoint(path, NULL, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height); //bottom to right line CGPathAddArc(path, NULL, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height - radius, radius, M_PI/2, 0.0f, 1); //bottom right CGPathAddLineToPoint(path, NULL, rect.origin.x + rect.size.width, rect.origin.y + radius); //right line CGPathAddArc(path, NULL, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, radius, 0.0f, -M_PI/2, 1); //top right CGPathAddLineToPoint(path, NULL, parentX + 15, rect.origin.y); //top right to right callout CGPathAddLineToPoint(path, NULL, parentX, rect.origin.y - 15); //callout right CGPathAddLineToPoint(path, NULL, parentX - 15, rect.origin.y); //callout left CGPathAddLineToPoint(path, NULL, rect.origin.x + radius, rect.origin.y); //top left callout to top left CGPathAddArc(path, NULL, rect.origin.x + radius, rect.origin.y + radius, radius, -M_PI/2, M_PI, 1); //top left CGPathCloseSubpath(path); //Path closed, no line draw

我认为这应该工作(没有测试过)。但光泽路径依赖于正在使用的标注矩形,所以我认为其他一切都应该正常工作。

作为一个侧面说明,Core Graphics涉及绘图路径,就像在一张纸上绘图一样。 CGPathMoveToPoint涉及放下铅笔。之后的所有内容都是依次绘制线条或弧线。所有你需要做的就是读取线/曲线正被绘制的点。请注意,弧被转换为曲线,但要读取它们,您需要知道pi,pi/2和pi/4在单位圆上的位置。这会告诉你弧线在哪里绘制。但总的来说,您可以假设(至少在这种情况下)弧线与前一条线的实际边角相对应。我添加了注释,指出哪些路径元素对应于框的哪一部分。我也评论了底部标注,而不是删除它。您可以取消注释以再次绘制底部标注,但您需要记住注释掉顶部并将矩形替换回来(我将它向下移动了14)。也考虑避免使用“幻数”,如标注(15)的大小,而是把这样的事情在你的文件:

#define CalloutSize 15.0f

这样做并插入CalloutSize到代码,而不是15将使您可以轻松更改其大小,而无需搜索正在使用的每个实例。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3