我想通过distanceTo()方法计算android中两个位置(GeoPoint)之间的距离,但是当我运行程序时,该方法返回0.0并且程序显示0.0KM。为什么?问题是什么?
public class MyLocation extends MapActivity {
GeoPoint mylocation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location);
text_location.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View view, int keyCode,KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_ENTER){
// The map should shows a location that user writes in edittex.
Geocoder geo=new Geocoder(getApplicationContext(),Locale.getDefault());
List<Address> address;
try {
address = geo.getFromLocationName(text_location.getText().toString(),3);
if(address.size()>0){
searchLocation=new GeoPoint((int)(address.get(0).getLatitude()*1e6),(int)(address.get(0).getLongitude()*1e6));
float distance=0;
distance=Distance(searchLocation);
OverlayItem overlayItem=new OverlayIte(searchLocation,textLocation,"Distance:"+distance+"km");
itemizedOverlay.addOverlay(overlayItem); mapOverlays.add(itemizedOverlay);
//
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
return false;
}
});
}
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
overlay.enableMyLocation();
overlay.enableCompass();
//
mylocation=overlay.getMyLocation();
overlay.runOnFirstFix(new Runnable() {
public void run() {
controller.setZoom(13);
controller.animateTo(overlay.getMyLocation());
}
});
}
private float Distance(GeoPoint searchLoc){
Location a=new Location("locA");
Location b=new Location("locB");
if(mylocation!=null){
a.setLatitude(mylocation.getLatitudeE6()/1e6);
a.setLongitude(mylocation.getLongitudeE6()/1e6);
b.setLatitude(searchLoc.getLatitudeE6()/1e6);
b.setLongitude(searchLoc.getLongitudeE6()/1e6);
}
if(a.getLatitude()!=0)
Log.i("this", "is not zero");
else
Log.i("this", "is zero");
float distance=a.distanceTo(b);
return distance;
}
}
我编辑帖子并添加初始化 myLocation 变量的 initMyLocation() 方法,并将日志添加到 Distance() 方法以检查 a 或 b 的值。
谢谢。干杯