运行 全球定位系统 android
Running gps android
尝试在 android 中创建一个 运行 gps,使用此代码每秒计算两点之间的距离(至少我认为它正在这样做):
gps = new GPSTracker(AndroidGPSTrackingActivity.this);
// check if GPS enabled
if (gps.canGetLocation()) {
final Handler h = new Handler();
final int delay = 1000; //milliseconds
h.postDelayed(new Runnable() {
public void run() {
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
Location locationA = new Location("point A");
final Location locationB = new Location("point B");
locationA.setLatitude(latitude);
locationA.setLongitude(longitude);
Timer t = new Timer();
h.postDelayed(new Runnable() {
public void run() {
double latitude1 = gps.getLatitude();
double longitude2 = gps.getLongitude();
locationB.setLatitude(latitude1);
locationB.setLongitude(longitude2);
}
}, delay);
float distance = locationA.distanceTo(locationB);
finalDistance[0] = (finalDistance[0] + distance);
displayDistance.setText(String.valueOf(finalDistance[0]));
h.postDelayed(this, delay);
}
}, delay);
无论我走还是不走,距离都会或多或少地以相同的增量变化。
我得到的距离也是一个奇怪的值,例如:6.47875890357E9
我的问题:1)这个距离的单位是什么?
2)我是不是因为垃圾编程技能而得到一些随机的官方文章?
1) 单位为米(参见distanceTo())。
2) 是的。但是像所有程序员一样,您仍在学习,所以为了更有帮助,我不会就此罢手!你距离很远的原因是因为你的代码在 locationA
和 locationB
之间取得了距离,而你在执行该行时没有设置 locationB
:
float distance = locationA.distanceTo(locationB);
所以你得到 locationA
和 lat/long 0,0 之间的距离。
您只是在 Runnable
中设置 locationB
的纬度和经度,这将在设置 distance
之后执行。因此,您可能需要将距离计算和输出它的代码移动到 Runnable
中,为 locationB
设置纬度和经度。您还必须 locationA
final
才能做到这一点。
尝试在 android 中创建一个 运行 gps,使用此代码每秒计算两点之间的距离(至少我认为它正在这样做):
gps = new GPSTracker(AndroidGPSTrackingActivity.this);
// check if GPS enabled
if (gps.canGetLocation()) {
final Handler h = new Handler();
final int delay = 1000; //milliseconds
h.postDelayed(new Runnable() {
public void run() {
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
Location locationA = new Location("point A");
final Location locationB = new Location("point B");
locationA.setLatitude(latitude);
locationA.setLongitude(longitude);
Timer t = new Timer();
h.postDelayed(new Runnable() {
public void run() {
double latitude1 = gps.getLatitude();
double longitude2 = gps.getLongitude();
locationB.setLatitude(latitude1);
locationB.setLongitude(longitude2);
}
}, delay);
float distance = locationA.distanceTo(locationB);
finalDistance[0] = (finalDistance[0] + distance);
displayDistance.setText(String.valueOf(finalDistance[0]));
h.postDelayed(this, delay);
}
}, delay);
无论我走还是不走,距离都会或多或少地以相同的增量变化。
我得到的距离也是一个奇怪的值,例如:6.47875890357E9
我的问题:1)这个距离的单位是什么?
2)我是不是因为垃圾编程技能而得到一些随机的官方文章?
1) 单位为米(参见distanceTo())。
2) 是的。但是像所有程序员一样,您仍在学习,所以为了更有帮助,我不会就此罢手!你距离很远的原因是因为你的代码在 locationA
和 locationB
之间取得了距离,而你在执行该行时没有设置 locationB
:
float distance = locationA.distanceTo(locationB);
所以你得到 locationA
和 lat/long 0,0 之间的距离。
您只是在 Runnable
中设置 locationB
的纬度和经度,这将在设置 distance
之后执行。因此,您可能需要将距离计算和输出它的代码移动到 Runnable
中,为 locationB
设置纬度和经度。您还必须 locationA
final
才能做到这一点。