java經緯度距離
⑴ java 經緯度轉換米
在經線上,相差一緯度約為111km ,因此100m(0.1KM)在經線上對應約為0.1/111=0.0009度,這個度數和緯度沒有關系
在緯線上,相差一經度約為111cosα(α為該緯線的緯度)因此100m(0.1KM)在該緯線上對應約為0.1/(111*cos23.14)=0.0009797度,這個度數和緯度有關,
如果要知道經緯度差和距離差的換算規律,請查閱連接中的回答。
http://..com/question/711399588905395965.html?oldq=1
⑵ 求java代碼,手機獲取當前GPS的經緯度。
記得我前幾天發過一個類似的代碼如下(適用安卓)
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.location.*;
importandroid.content.*;
importandroid.util.Log;
importandroid.widget.TextView;
istener{
LocationManagerlocman;
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locman=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
}
@Override
protectedvoidonResume(){
if(locman!=null){
locman.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
}
super.onResume();
}
@Override
protectedvoidonPause(){
if(locman!=null){
locman.removeUpdates(this);
}
super.onPause();
}
@Override
publicvoidonLocationChanged(Locationlocation){
TextViewtextView1=(TextView)findViewById(R.id.textView1);
textView1.setText("Latitude:Longitude-"
+String.valueOf(location.getLatitude())+":"+String.valueOf(location.getLongitude()));
TextViewtextView2=(TextView)findViewById(R.id.textView2);
textView2.setText(String.valueOf(location.getTime()));
Log.v("----------","----------");
Log.v("Latitude",String.valueOf(location.getLatitude()));
Log.v("Longitude",String.valueOf(location.getLongitude()));
Log.v("Accuracy",String.valueOf(location.getAccuracy()));
Log.v("Altitude",String.valueOf(location.getAltitude()));
Log.v("Time",String.valueOf(location.getTime()));
Log.v("Speed",String.valueOf(location.getSpeed()));
Log.v("Bearing",String.valueOf(location.getBearing()));
}
@Override
publicvoidonProviderDisabled(Stringprovider){
}
@Override
publicvoidonProviderEnabled(Stringprovider){
}
@Override
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){
switch(status){
caseLocationProvider.AVAILABLE:
Log.v("Status","AVAILABLE");
break;
caseLocationProvider.OUT_OF_SERVICE:
Log.v("Status","OUT_OF_SERVICE");
break;
caseLocationProvider.TEMPORARILY_UNAVAILABLE:
Log.v("Status","TEMPORARILY_UNAVAILABLE");
break;
}
}
}
之前的提問鏈接
http://..com/question/426245883846255372
⑶ 如何使用java和百度地圖api 得到兩點之間的路程(駕車行駛距離)
獲取到兩點的經緯度,再調用網路地圖的api計算。我記得,有一個計算距離的api.
<scripttype="text/javascript">
//網路地圖API功能
varmap=newBMap.Map("allmap");
map.centerAndZoom("重慶",12);//初始化地圖,設置城市和地圖級別。
varpointA=newBMap.Point(106.486654,29.490295);//創建點坐標A--大渡口區
varpointB=newBMap.Point(106.581515,29.615467);//創建點坐標B--江北區
alert('從大渡口區到江北區的距離是:'+(map.getDistance(pointA,pointB)).toFixed(2)+'米。');//獲取兩點距離,保留小數點後兩位
varpolyline=newBMap.Polyline([pointA,pointB],{strokeColor:"blue",strokeWeight:6,strokeOpacity:0.5});//定義折線
map.addOverlay(polyline);//添加折線到地圖上
</script>
⑷ JAVA,已知當前經緯度和距離,計算符合距離條件的經度最大值、最小值和緯度的最大值、最小值。
//拿走不謝
private final static double R = 6370996.81;
private final static double PI = 3.14159265;
private final static double RAD = Math.PI / 180.0;
/// <summary>
/// 根據提供的經度和緯度、以及半徑,取得此半徑內的最大最小經緯度
/// </summary>
/// <param name="lat">緯度</param>
/// <param name="lon">經度</param>
/// <param name="rais">半徑(米)</param>
/// <returns></returns>
public static double[] GetAround(double lat, double lon, int rais)
{
Double latitude = lat;
Double longitude = lon;
Double degree = (24901 * 1609) / 360.0;
double raisMile = rais;
Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raisMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;
Double mpdLng = degree * Math.cos(latitude * (PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raisMile;
Double minLng = longitude - radiusLng;
Double maxLng = longitude + radiusLng;
return new double[] { minLat, minLng, maxLat, maxLng };
}
/// <summary>
/// 根據提供的兩個經緯度計算距離(米)
/// </summary>
/// <param name="lng1">經度1</param>
/// <param name="lat1">緯度1</param>
/// <param name="lng2">經度2</param>
/// <param name="lat2">緯度2</param>
/// <returns></returns>
public static double GetDistance(double lng1, double lat1, double lng2, double lat2)
{
double radLat1 = lat1 * RAD;
double radLat2 = lat2 * RAD;
double a = radLat1 - radLat2;
double b = (lng1 - lng2) * RAD;
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * R;
s = Math.round(s * 10000) / 10000;
return s;
}