我正在MKCircle
上绘制MKMapView
,我需要获取Circle边框中的所有点(不在其中)以将点坐标发送到服务器并获取与该区域相关的信息这是在圈内。
同样,由于我有center coordinate
和radius
的圆圈所以也许可以通过此变量计算点数。
如何获得点坐标?
答案 0 :(得分:3)
我计算了分数,但是你知道我们不能得到所有的分数,但是这个方法返回的圆就足够了40个点。
internal func radiusSearchPoints(coordinate: CLLocationCoordinate2D, radius: CLLocationDistance) -> [CLLocationCoordinate2D]
{
var points: [CLLocationCoordinate2D] = []
let earthRadius = 6378100.0
let π = M_PI
let lat = coordinate.latitude * π / 180.0
let lng = coordinate.longitude * π / 180.0
for var t: Double = 0; t <= 2 * π; t += 0.3
{
let pointLat = lat + (radius / earthRadius) * sin(t)
let pointLng = lng + (radius / earthRadius) * cos(t)
let point = CLLocationCoordinate2D(latitude: pointLat * 180 / π, longitude: pointLng * 180 / π)
points.append(point)
}
return points
}
答案 1 :(得分:0)
圆周上有无限点,所以所有都是不可能的。
但是,可以仅使用centre coordinate
和radius
原点圆的方程由参数方程给出:
x = cos(angle) * radius
y = sin(angle) * radius
对于示例圈子:centre = (1, 1) radius = 2
和示例point (3, 1)
dx = point.x - centre.x
dy = point.y - centre.y
dx = 3 - 1 = 2
dy = 1 - 1 - 0
angle = atan2(dy/dx) = 0
dx = cos(angle) * radius
rearranging gives:
radius = dx/cos(angle)
radius = 2/cos(0)
radius = 2/1
radius = 2
此点与圆心之间的距离与半径相同,因此该点位于圆周上。