對於我的應用程序,我必須在Google地圖上找到一個點的位置,只知道它位於2個其他點和座標被捕獲時的時間(以毫秒爲單位) 。如何找到兩個其他點之間的地理點
在我的代碼,假設A和B點給出X爲找點,我:A和B之間
計算距離
築底時間我發現了的速度(以微度/ MS)從A行進到B
我發現從點A和點X的距離(使用時間和速度)
使用類似三角形的規則,我計算緯度和X點的經度從A點
此工作流程帶來了錯誤的地圖上,所以,往往在X標記不是在A和B標記之間的界線。
我該如何讓它更好用?這是全球球形的問題嗎?
謝謝大家。
下面是代碼:
int ax = oldPoint.getLatitude();
int ay = oldPoint.getLongitude();
int bx = currentPoint.getLatitude();
int by = currentPoint.getLongitude();
long at = oldPoint.getDataRilevamento(); //get time first point
long bt = currentPoint.getDataRilevamento(); // get time second point
long xt = x.getDate(); // time of point to find
int c1 = bx-ax;
int c2 = by-ay;
double hyp = Math.sqrt(Math.pow(c1, 2) + Math.pow(c2, 2));
double vel = hyp/(bt-at);
double pos = vel*(xt - at);
int posx = (int)((pos*c1)/hyp);
int posy = (int)((pos*c2)/hyp);
x.setLatitude(ax+posx); //set the latitude of X
x.setLongitude(ay+posy); // set the longitude of X
你真棒!真的非常感謝你! –
感謝您發佈此算法。我需要爲我的項目做類似的事情,我相信這樣做會的!你介意我把它包裝起來並將它作爲npm模塊發佈嗎? –
即使超過三年:起首! – 2014-12-11 20:53:18