可能重复:
J2ME/Android/BlackBerry - driving directions, route between two locations
我想计算android中两个地理位置之间的距离。我使用Location.distanceTo
和Location.distanceBetween
,但此方法返回两点之间的DIRECT长度。
我想计算两点之间的路线,然后计算所有路线点之间的总距离。
我不想在地图上显示点或路线。我只是想计算从当前位置到给定点的距离,而不是其他。
即。我想计算两个地理点之间的路线长度。 任何人都可以帮我计算两个地理点之间的路线长度吗?
答案 0 :(得分:2)
我找到了我使用此Google api的答案,这将返回有关路线的所有数据。
API:Google Api for Route Calculation
您可以在Google Map Api
上找到更多信息谢谢大家的支持。
答案 1 :(得分:0)
此方法返回距离:
public double distance(float latA,float longA,float latB,float longB){
double d2r = Math.PI / 180;
double dlong = (longA - longB) * d2r;
double dlat = (latA - latB) * d2r;
double a = Math.pow(Math.sin(dlat / 2.0), 2)
+ Math.cos(latB * d2r) * Math.cos(latA * d2r)
* Math.pow(Math.sin(dlong / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
}
但这是为了找出位移。并且不知道如何计算所有路线点之间的距离。也许你可以使用这个方法并循环它。
答案 2 :(得分:0)
我认为您正在寻找的是来自类似问题的this answer
public class MapRouteActivity extends MapActivity {
LinearLayout linearLayout;
MapView mapView;
private Road mRoad;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
new Thread() {
@Override
public void run() {
double fromLat = 49.85, fromLon = 24.016667;
double toLat = 50.45, toLon = 30.523333;
String url = RoadProvider
.getUrl(fromLat, fromLon, toLat, toLon);
InputStream is = getConnection(url);
mRoad = RoadProvider.getRoute(is);
mHandler.sendEmptyMessage(0);
}
}.start();
}
Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
TextView textView = (TextView) findViewById(R.id.description);
textView.setText(mRoad.mName + " " + mRoad.mDescription);
MapOverlay mapOverlay = new MapOverlay(mRoad, mapView);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
};
};
private InputStream getConnection(String url) {
InputStream is = null;
try {
URLConnection conn = new URL(url).openConnection();
is = conn.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}