我的项目有一些粗略的代码,我试图在按下按钮时获取用户的 GPS 位置,并且我希望该位置是一个 GeoPoint,然后我可以将其传递给一个方法。
该方法适用于绘制该点的 Overlay 的 Overlay 类。我正在使用 Stack Overflow 问题中的一些代码如何获取当前 GPS 位置?. 我设置了程序,以便将 GeoPoint 添加到数组中,然后从该数组中检索它并添加到方法中。有没有更好的方法来做到这一点,或者有什么方法可以使用该点而不将其放入数组中?
这是添加 Overlay 并从数组中获取 GeoPoint 的按钮:
Button startBtn = (Button) findViewById(R.id.startBtn);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
getLocation();
tempOverlay = (MapOverlay) listOfOverlays.get(arrayNumber);
tempOverlay.addPoint(points.get(pointCount));
mapView.postInvalidate();
}
}
});
这是创建 locationManager 和 requestUpdates 的 getLocation() 方法。
public void getLocation()
{
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
System.out.println("Get Location Called");
}
这是类中获取更新的onLocationChanged
方法MyLocationListener
,一旦我有了位置,我就会停止更新请求。
@Override
public void onLocationChanged(Location loc)
{
if(loc != null)
{
Toast.makeText(getBaseContext(),"LocationChanged : Lat: " + loc.getLatitude()+ " Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();
}
p = new GeoPoint((int) (loc.getLatitude() * 1E6),(int) (loc.getLongitude() * 1E6));
points.add(p);
System.out.println("Point Added to Array");
LBServicesActivity.this.lm.removeUpdates(this);
mc.animateTo(p);
mc.setZoom(18);
}
我如何将该 GeoPoint 传递给 buttonListener 中的方法而不将其添加到数组中?