gpt4 book ai didi

Swift:在 MKMapView 中绘制一个半球体

转载 作者:搜寻专家 更新时间:2023-11-01 05:36:36 24 4
gpt4 key购买 nike

我想在 MKMapView 上绘制一个半球体,知道中心坐标、开始和结束角度以及以海里为单位的半径。

使用这个线程(How to draw UIBezierPath overlay on MKMapView?),我将 MKOverlayPathRenderer 子类化以绘制弧线:

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中画一条弧线?

编辑:

这是行不通的:

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()
}

非常感谢!

最佳答案

您不应该绘制路径,而是将其分配给渲染器的 path 属性:

Subclasses should override it and use it to create the CGPathRef data type to be used for drawing. After creating the path, your implementation should assign it to the path property.

所以

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 中输入。

关于Swift:在 MKMapView 中绘制一个半球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37801822/

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