私は、Androidでプログラムがどのように機能するかについてはあまり明確ではありません。私は過去2か月間Androidの作業を開始し、Javaの初心者でもあります。ですから、私は開発と学習に最善を尽くしています。これが私が実装したコードの一部ですが、要件に従ってどのように機能するかはあまり明確ではありません。
activity{
onCreate(){
/* here i am using google maps api and trying to plot the current location*/
OverlayItem overlayItem1 = new OverlayItem(ourLocation,"Our Location","Position");
CustomPinpoint custom1 = new CustomPinpoint(d, Activity.this);
custom1.insertPinpoint(overlayItem1);
overlayList.add(custom1);
controller.animateTo(ourLocation);
}
private class TouchOverlay extends com.google.android.maps.Overlay{
public boolean onTouchEvent(MotionEvent event, MapView map){
onZoom();
}
}
public boolean onCreateOptionsMenu(Menu menu){}
public boolean onOptionsItemSelected(MenuItem item){
case.X:
getGPSPoints();//Here i will be getting some gps points from stored database
// and I would like to plot them all on the map.
TouchOverlay touchOverlay = new TouchOverlay();
overlayList.add(touchOverlay);
}
onPause(){
super.onPause();
lm.removeUpdates(this);
}
onResume(){
super.onResume();
lm.requestLocationUpdates(towers, 500, (float) 0.5, this);
}
onLocationChanged(Location l) {
// TODO Auto-generated method stub
clearmap();
lat = (int) (l.getLatitude()*1E6);
longi = (int) (l.getLongitude()*1E6);
GeoPoint ourLocation = new GeoPoint(lat, longi);
CustomPinpoint custom = new CustomPinpoint(d, TrafficMapActivity.this);
OverlayItem overlayItem = new OverlayItem(ourLocation,"Our location","Position");
custom.insertPinpoint(overlayItem);
overlayList.add(custom);
}
}
私の質問は、onLocationChanged
メソッドがいつ呼び出され、onTouchEventメソッドも呼び出されるのかということです。
メソッドを作成しgetGPSPoints()
、取得したポイントをマップ上にプロットしたいと思います。私の意図は、グーグルマップのトラフィックレイヤーのようなものです。画面をドラッグしたり、ズームイン/ズームアウトしたりするときに、継続的に描画する必要があります。このために、私はクラスのメソッドgetGPSPoints
内で同じメソッドを使用しています。onZoom()
TouchOverlay
ただし、最初にオプションを選択したときと、最初のズームイン/ズームアウト操作では、1回だけ描画しています。残りを描画する必要がある場合は、現在の実装に従ってオプションをもう一度クリックする必要があります。このアクティビティはどのように機能しますか?