0
我對我的項目有一些粗略的代碼,我試圖在按下按鈕時獲取用戶的GPS位置,並且我希望位置是一個GeoPoint,然後我可以將其傳遞給方法。如何在單擊按鈕上獲取GPS位置?
該方法適用於繪製疊加點的Overlay類。我正在使用Stack Overflow的一些代碼問題How can I obtain the current GPS location?。我設置了程序,以便將GeoPoint添加到數組中,然後從該數組中將其重新添加並添加到方法中。有沒有更好的方法來做到這一點,或者有什麼方法可以不使用數組來放置點?
這是其中添加所述覆蓋按鈕和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");
}
這是MyLocationListener
類獲取更新裏面的onLocationChanged
方法,一旦我有一個位置,我停止更新的要求。
@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中的方法而不將其添加到數組中?
嗨對不起,我拿了值這麼久才能回覆。感謝這個想法,我試了一下,它的工作非常好。再次感謝。 – 2012-04-13 19:12:29