作成しているアプリのマップとして使用する必要のあるモールの画像があります。私は地図の下隅のGPS緯度/長さを持っており、下のGPS座標から地図画像の上部になるまでの距離を計算しました。ただし、これらは直線の線形マップではありません。つまり、緯度と長さをすべてきれいにプロットすることはできません。
さまざまな数式を試してみましたが、とても近くにありますが、地図の左上と右上の上部の緯度と長さをプロットできません。これまでのところ、これは私が持っているものです:
double distanceFromLeftToRightGPS = bottomLeft.distanceTo(bottomRight);
double bearingleftToRight= bottomLeft.bearingTo(bottomRight);
double distmapFromLeftToRightImg = map.getWidth();
double distmapFromTopToBottomImg = map.getHeight();
double percentageValueOfTopToBottomImg = (distmapFromTopToBottomImg * 100)
/ distmapFromLeftToRightImg;
double distanceFromTopToBottomGPS = (percentageValueOfTopToBottomImg * 0.01)
* distanceFromLeftToRightGPS;
double bearingToTopFromBottom = -90;
double lat1 = Math.toRadians(bottomLeft.getLatitude());
double lon1 = Math.toRadians(bottomLeft.getLongitude());
double dist = (distanceFromTopToBottomGPS/1000f)/6371.0f;
double lat2 = Math.asin(Math.sin(lat1) * Math.cos(dist)
+ Math.cos(lat1) * Math.sin(dist) * Math.cos(bearingToTopFromBottom));
double a = Math.atan2(Math.sin(bearingToTopFromBottom) * Math.sin(dist)
* Math.cos(lat1), Math.cos(dist) - Math.sin(lat1) * Math.sin(lat2));
System.out.println("a = " + a);
double lon2 = lon1 + a;
lon2 = (lon2 + 3 * Math.PI) % (2 * Math.PI) - Math.PI;
System.out.println("Latitude = " + Math.toDegrees(lat2) + "\nLongitude = "
+ Math.toDegrees(lon2));
これで私はとても近くになりますが、最終的な場所は実際にあるべき場所から外れています。また、マップの下から上に何が表示されるかを確認するために、どの方位を使用すべきかわかりません。他の誰かがこれを機能させる方法についての情報を持っているなら、それは素晴らしいでしょう。