Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 基于距离(米)和当前位置的方向在地图上放置注释_Swift_Mapkit_Cllocation - Fatal编程技术网

Swift 基于距离(米)和当前位置的方向在地图上放置注释

Swift 基于距离(米)和当前位置的方向在地图上放置注释,swift,mapkit,cllocation,Swift,Mapkit,Cllocation,我正在开发一个应用程序,根据船只数量、目标时间、风向和风力来规划帆船比赛场地 目前,我将所有变量存储在设备上,并将竞赛委员会的起跑船固定在地图上。我找到了很多关于如何计算两个位置之间的距离的信息,但找不到关于如何放置注释的任何信息,该注释距离起始船舶xx米/方位xx度 起始船在地图上(位置:纬度/经度)。如何将注释放置在距离起始船舶500米处,方位为90度?我相信有很多关于如何在横向/纵向位置放置注释的示例。因此,我将帮助您了解如何获取目标位置 首先,您可以看到哈弗森公式,以获得横向/纵向位置

我正在开发一个应用程序,根据船只数量、目标时间、风向和风力来规划帆船比赛场地

目前,我将所有变量存储在设备上,并将竞赛委员会的起跑船固定在地图上。我找到了很多关于如何计算两个位置之间的距离的信息,但找不到关于如何放置注释的任何信息,该注释距离起始船舶xx米/方位xx度


起始船在地图上(位置:纬度/经度)。如何将注释放置在距离起始船舶500米处,方位为90度?

我相信有很多关于如何在横向/纵向位置放置注释的示例。因此,我将帮助您了解如何获取目标位置

首先,您可以看到哈弗森公式,以获得横向/纵向位置 在这里有一个很好的python示例

对于swift,您可以使用此功能,假设目标距离当前用户航向500米90度

   func getNewTargetCoordinate(position: CLLocationCoordinate2D, userBearing: Float, distance: Float)-> CLLocationCoordinate2D{

    let r = 6378140.0
    let latitude1 = position.latitude * (Double.pi/180) // change to radiant
    let longitude1 = position.longitude * (Double.pi/180)
    let brng = Double(userBearing+90) * (Double.pi/180)

    var latitude2 = asin(sin(latitude1)*cos(Double(distance)/r) + cos(latitude1)*sin(Double(distance)/r)*cos(brng));
    var longitude2 = longitude1 + atan2(sin(brng)*sin(Double(distance)/r)*cos(latitude1),cos(Double(distance)/r)-sin(latitude1)*sin(latitude2));

    latitude2 = latitude2 * (180/Double.pi)// change back to degree
    longitude2 = longitude2 * (180/Double.pi)

    // return target location
    return CLLocationCoordinate2DMake(latitude2, longitude2)
}

这正是我想要的。使用此函数,我可以通过解析变量“距离”和“方位”,从一开始计算浮标1、浮标2、浮标3等的位置。非常感谢你的帮助!欢迎您,如果这解决了您的问题,您可以将其作为公认的答案