【发布时间】:2013-12-18 17:26:31
【问题描述】:
我有一个我一直在玩的小项目(Android、GPS、地图 API),我需要弄清楚如何在只知道米的情况下从给定的经度/纬度/GeoPoint 中找到经度/纬度/GeoPoint /km 经度和纬度。例如我想知道一个点在哪里,我知道沿经度 +1000 米,沿纬度 +1000 米。
这与您将看到的通常的地理点/距离问题略有不同,并且与地理围栏半径不完全相关,因为距离是 X、Y 米/公里,而且我没有方位。 (我可以算出方位,但我没有合适的直接距离)
基本上,如果我可以反转 GeoPoint.distanceTo() 它将为我完成这项工作。
更新
只是多一点背景。我基本上是在应用我的节点三角测量想法,但是该算法要求我的输入采用与经度和纬度不同的地图标准化形式。我创建了一个地图/网格,其中 0,0(底部/左侧)是我正在使用的节点的左侧/西部和底部/最南端的经度/纬度值。地图上的所有其他节点 X/Y 都是通过使用 GeoPoint.distanceTo() 从 0,0 节点的经度/纬度找到它们的米来确定的。 (请注意,我通过对每个节点执行 distanceTo 两次来找到它们的 X/Y,因此我有从 0,0 开始的 X 和 Y 米,而不是到节点的直线)以米为单位的距离被输入算法和新的 X/生成 Y 地图点。
所以我需要弄清楚如何将距离从经度/纬度转换为另一个以前未知的经度/纬度。
double startPointLongitude = 23.459821;
double startPointLatitude = 76.998200;
double distanceLongitude = 100; // 100 meters along the longitude
double distanceLatitude = 75; // 75 meters along the latitude
【问题讨论】:
-
请注意顺序很重要,如果您先向北然后向东,然后向东然后向北,您将到达不同的地点。
-
问题是我什至不确定使用北和东轴承是否能正常工作。我相信指南针与经度和纬度所在的线并不完全对齐。这意味着纬度将与地球的曲线一起运行,而北方将是一条直线到一个点。我可能是错的。但即使我进行了一次测试,我也不知道我的结果是否正确。
-
对于数百米,您可以将笛卡尔坐标转换为polar ones。误差可以忽略不计。对于更远的距离,你会遇到麻烦,因为地球不是一个完美的球体,而是一个椭球体。 GMaps 使用WGS84 作为参考。
-
@Mister Smith:错了,你不能那样做,因为 lat 和 lon 有不同的比例(sclae factor = cos(latitude)
标签: android google-maps gps