首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:在MKMapView中绘制半球体

Swift:在MKMapView中绘制半球体
EN

Stack Overflow用户
提问于 2016-06-14 10:00:14
回答 1查看 611关注 0票数 2

我试图在MKMapView上绘制一个半球体,知道中心坐标,起点和终点角度,以及以海里为单位的半径。

使用这个线程(How to draw UIBezierPath overlay on MKMapView?),我创建了MKOverlayPathRenderer的子类来绘制一条弧线:

代码语言:javascript
复制
import UIKit
import MapKit
class IGAAcarsDrawArc: MKOverlayPathRenderer
{
    let PI = 3.14159265
    let radius : CGFloat = 10.0
    var startAngle: CGFloat = 0
    var endAngle: CGFloat = 3.14159
    var latitude = 25.96728611
    var longitude = -80.453019440000006

    override func createPath()
    {
        let line = MKPolyline()

        let arcWidth: CGFloat = 5

        let path = UIBezierPath(arcCenter: CGPointMake(CGFloat(latitude), CGFloat(longitude)),
                                radius: self.radius,
                                startAngle: startAngle,
                                endAngle: endAngle,
                                clockwise: true)

        path.lineWidth = arcWidth
        path.stroke()
    }
}

现在,还不清楚如何使用它来创建MKPolyline并在mapView中实现(mapView: MKMapView,rendererForOverlay overlay: MKOverlay)。

这个帖子(How to draw arc/curve line with MKOverlayView on MKMapView)也没有对这个问题有太多的解释。

有没有人能帮我在MKMapView里画个弧线?

编辑:

这不起作用:

代码语言:javascript
复制
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
{
   if overlay is IGAAcarsDrawArc
        {
            let arcLine = IGAAcarsDrawArc(overlay: overlay)

            arcLine.lineWidth = 8
            arcLine.strokeColor = UIColor.magentaColor()
        }


        return MKPolylineRenderer()
 }

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-06-25 17:08:12

不应绘制路径,而应将其指定给渲染器的path属性:

子类应该覆盖它,并使用它来创建用于绘图的CGPathRef数据类型。创建路径后,您的实现应将其分配给path属性。

所以

代码语言:javascript
复制
override func createPath()
{
…
  let path = UIBezierPath(arcCenter: CGPointMake(CGFloat(latitude), CGFloat(longitude)),
                            radius: self.radius,
                            startAngle: startAngle,
                            endAngle: endAngle,
                            clockwise: true)

  path.lineWidth = arcWidth
  self.path = path.cgPath // assign instead of stroke
}

在Safari中输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37801822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档