计算当前位置和点之间的距离[重复]
Posted
技术标签:
【中文标题】计算当前位置和点之间的距离[重复]【英文标题】:Calculating distance between current location and a point [duplicate] 【发布时间】:2012-10-05 17:40:24 【问题描述】:可能重复:android : Location.distanceTo not working correctly?
我正在尝试计算用户位置(驾驶员或移动位置)与固定纬度经度之间的距离。但是,文本不显示结果,只显示 TextView。
每当用户到达固定纬度经度的某个半径时,imageview 就会变为另一个 drawable。我已经尝试这样做一个多星期了。有帮助吗?
主要代码:
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.lights);
//placing location
LocationManager loc = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = loc.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double clong = location.getLongitude();
double clat = location.getLatitude(); //current longitude and latitude
double latitude=0.305085;
double longitude=101.70506; //fixed location
double dist = Math.sqrt(Math.pow((111.3 * (latitude - clat)),2) + Math.pow((71.5 * (longitude - clong)),2)) * 1000;
if(dist<1000)
calculate(dist);
tvDis = (TextView)findViewById(R.id.distance);
tvDis.setText(dist+"m");
public void calculate(double x)
ImageView light = (ImageView)findViewById(R.id.imageView1);
if (x<1000)
light.setImageResource(R.drawable.icon_yellow);
if(x<500)
light.setImageResource(R.drawable.icon_red);
else
light.setImageResource(R.drawable.icon_green);
我尝试将 1000 更改为更大的数字,但仍然没有运气。
【问题讨论】:
您可以尝试对这个主题进行一些研究。请参阅上述问题以获取两个位置之间的距离。 @MarvinLabs 我确实试图找到任何可以让我的生活更轻松地编写代码的东西。这就是我想出这段代码的方式。请问你能告诉我我做错了什么吗? 只需阅读 Location 类的文档,您就可以计算两点之间的距离。请参阅下面的答案。 【参考方案1】:来自开发者网站
public static void distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
http://developer.android.com/reference/android/location/Location.html
【讨论】:
如果您已经准备好两个位置对象,您也可以添加:public float distanceTo (Location dest)
。
@MarvinLabs 我曾尝试使用此方法,但返回的 float[] 结果中的值为负数。我不确定这是什么意思,是公里、米还是英里?
RTFM,里面明确写了。以上是关于计算当前位置和点之间的距离[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在JavaScript中计算两个geolocs之间的距离[重复]