私は自分のプロジェクトにおおまかなコードをいくつか持っており、ボタンが押されたときにGPSの位置を取得しようとしています。その場所をメソッドに渡すことができるGeoPointにします。ボタンクリックでGPS位置を取得するにはどうすればよいですか?
このメソッドは、その点をオーバーレイに描画するオーバーレイクラスです。私はスタックオーバーフローの質問からいくつかのコードを使用していたHow can I obtain the current GPS location?。私は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()メソッドである:
これは、オーバーレイが追加され、GeoPointがアレイから取得されるボタンです。
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
方法です。私は、配列にそれを追加することなく、buttonListenerでメソッドにGeoPointことを渡す方法
@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);
}
?
こんにちは申し訳ありませんが、私が取ったボタンへのアクセスをクリックしたときに次に
を返信するには長い間。アイデアをありがとう、私はそれを試してみて、それは非常にうまく動作します。再度、感謝します。 –