如何解决在cgPath上的两个坐标之间添加中间点
我们有一个函数,该函数基于CLLocationCoordinate2D数组创建路径,该数组包含4个坐标,并将创建具有正方形形状的路径:
func createPath(coordinates: [CLLocationCoordinate2D]) {
for (index,coordinate) in coordinates.enumerated() {
if index == 0 {
path.move(to: CGPoint(x: coordinate.latitude,y:coordinate.longitude))
} else {
path.addLine(to: CGPoint(x: coordinate.latitude,y: coordinate.longitude))
}
}
}
func getMiddlePoint(firstPoint: CGPoint,secondPoint: CGPoint) -> CGPoint {
var middlePoint = CGPoint()
middlePoint.x = (firstPoint.x + secondPoint.x)/2
middlePoint.y = (firstPoint.y + secondPoint.y)/2
return middlePoint
}
我们想要的是每侧获得4分,然后再移动到另一侧。我试过合并这样的函数,但它返回大约90点:
func createPath(coordinates: [CLLocationCoordinate2D]) {
for (index,y: coordinate.longitude))//get the first point
path.addLine(to: getMiddlePoint(firstPoint: CGPoint(x: coordinate.latitude,y: coordinate.longitude),secondPoint: CGPoint(x: coordinate.latitude,y: coordinate.longitude))) // get the middle point
}
}
}
这是坐标经过硬编码后的样子,每边返回2点:
func createPath(){
path.move(to: CGPoint(x: 32.7915055,y: -96.8028408))//1
path.addLine(to: CGPoint(x: 32.79174845,y: -96.80252195))//midpoint between 1 and 2
path.addLine(to: CGPoint(x: 32.7919914,y: -96.8022031))//2
path.addLine(to: CGPoint(x: 32.791501100000005,y: -96.80235195))////midpoint between 2 and 3
path.addLine(to: CGPoint(x: 32.7910108,y: -96.8025008))//3
path.addLine(to: CGPoint(x: 32.791301700000005,y: -96.8020985))//midpoint between 3 and 4
path.addLine(to: CGPoint(x: 32.7915926,y: -96.8016962))//4
path.addLine(to: CGPoint(x: 32.79154905,y: -96.8022685))//midpoint between 4 and 1
}
任何想法如何每边只获得4分吗?
解决方法
您的A&B Test
语句被倒置。首先,您必须添加中点,然后添加下一个点。同样,您的encodeURI()
被同一点调用两次。
写法不同:
path.addLine
还要注意,GPS坐标是球形的,通常,中点的计算方法不应与在平面上相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。