我有我需要用作應用程序的地圖的商場圖像。我有地圖底角的GPS lat/long,我計算出了從底部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));
這讓我哦,如此接近,但最終的位置是離開它應該是真正的。我也不確定我應該使用什麼樣的方式來查看地圖底部會發生什麼。如果其他人有一些關於如何讓這個工作很棒的信息。
這張照片是一幅地圖,顯示出像一個國家或大陸這樣的大地理區域,還是顯示出像村莊或城市這樣的小部分? – AlexWien 2013-03-14 11:39:38
這些是矩形圖像,基本上都是從大型商場的藍色圖案中提取的。我實際上遇到了一些與我需要的數據類似的帖子,它使用左上角和右下角的gps座標來顯示地圖在谷歌地圖上排列的位置,然後找到放置gps位置的位置用戶。我根據自己的需求量身定製了它,它工作得很好。 – 2013-03-14 17:16:05
是的,對於這樣的小區域來說,這是非常不容易的。沒有考慮地球曲率,只有緯度與經度軸的比例不同。 – AlexWien 2013-03-14 17:29:13