本文介绍了安卓:如何用GPS测量距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个应用程序,这是采取的经度和纬度上的当前位置的用户。和算一时,什么距离行驶公里数的用户。

在currentLat和currentLon是当前的经纬度的user.But的我不知道该怎么把经纬度为endLat和ednLon。

对不起我的英文不好。

先谢谢了。

///////////////////////////////////

我做到了应用程序,但现在只有一个小问题。
当我开始第一次节目,我得到价值5536,当我重新启动该程序,我得到正常值0.0

我的英语不好再难过。 :)

和帮助我的家伙谢谢,你是最好的:)

 公共类全球定位系统扩展了活动{ TextView中显示;
  双currentLon = 0;
  双currentLat = 0;
  双lastLon = 0;
  双lastLat = 0;
  双距离;
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_test);
    显示=(的TextView)findViewById(R.id.info);  LM的LocationManager =(的LocationManager)getSystemService(LOCATION_SERVICE);
                lm.requestLocationUpdates(lm.GPS_PROVIDER,0,0,Loclist);
                位置LOC = lm.getLastKnownLocation(lm.GPS_PROVIDER);                如果(LOC == NULL){
                    display.setText(无GPS定位找到);
                    }
                    其他{
                        //设置当前经纬度
                        currentLon = loc.getLongitude();
                        currentLat = loc.getLatitude();                        }
                //设置最后的纬度和经度
                lastLat = currentLat;
                lastLon = currentLon;
} LocationListener的Loclist =新LocationListener的(){
@覆盖
公共无效onLocationChanged(地点){
    // TODO自动生成方法存根     //启动位置管理器
     LM的LocationManager =(的LocationManager)getSystemService(LOCATION_SERVICE);      //获取最后一个位置
     位置LOC = lm.getLastKnownLocation(lm.GPS_PROVIDER);    //请求新位置
      lm.requestLocationUpdates(lm.GPS_PROVIDER,0,0,Loclist);      //获取新位置
      位置LOC2 = lm.getLastKnownLocation(lm.GPS_PROVIDER);      //获取当前的经纬度和长
     currentLat = loc.getLatitude();
     currentLon = loc.getLongitude();
    位置locationA =新的位置(点A);
        locationA.setLatitude(lastLat);
        locationA.setLongitude(lastLon);    位置locationB =新的位置(点B);
        locationB.setLatitude(currentLat);
        locationB.setLongitude(currentLon);        双distanceMeters = locationA.distanceTo(locationB);        双distanceKm = distanceMeters / 1000F;        display.setText(的String.format(。%2F公里,distanceKm));        }@覆盖
公共无效onProviderDisabled(字符串提供商){
    // TODO自动生成方法存根}@覆盖
公共无效onProviderEnabled(字符串提供商){
    // TODO自动生成方法存根}@覆盖
公共无效onStatusChanged(字符串提供商,INT地位,捆绑演员){
    // TODO自动生成方法存根} };}


解决方案

endLat, endLon is a confusing name:

You should have lastLat, lastLon: the lat,lon received in the previous call of onGpsUpdate, save that into your e.g distanceCalculator.lastLatwhere distanceCalculator is an object where you store that lastLat, and lastLon

Then you should have curLat, curLon: current lat, lon delivered in onGPSUpdate

Then calculate the distance from (lastLat, lastLon) -> (curLat, curLon),and update your distanceCalculator.lastLat and lastLon.

这篇关于安卓:如何用GPS测量距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-06 13:42