現在の場所を取得し、それにドローアブルを固定するMapActivityがあります。私の場所が変更されると(onchangedlocationメソッド)、地図上に別のピンポイントが表示されますが、最初のピンポイントは消えません。もう1つの問題は、onchangedlocationが、画面に触れるまで別のドローアブルを固定しないことです。すぐに表示するにはどうすればよいですか。このドローアブルで車の現在位置を表示して、GPSなどのように適切に移動するようにします。
これが私がピンポイントを追加する私の活動です。
public class CustomPinpoint extends ItemizedOverlay<OverlayItem>{
private ArrayList<OverlayItem> pinpoints = new ArrayList<OverlayItem>();
private Context c;
public CustomPinpoint(Drawable defaultMarker) {
super(boundCenter(defaultMarker));
// TODO Auto-generated constructor stub
}
public CustomPinpoint(Drawable m, Context context) {
// TODO Auto-generated constructor stub
this(m);
c = context;
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return pinpoints.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return pinpoints.size();
}
public void insertPinpoint(OverlayItem item){
pinpoints.add(item);
this.populate();
}
}
そして私はこれを私のoncreateメソッドで使用します:
lm= (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
towers = lm.getBestProvider(crit, false);
final Location location = lm.getLastKnownLocation(towers);
if(location != null){
latit = (int) (location.getLatitude() *1E6);
longi = (int) (location.getLongitude() *1E6);
ourLocation = new GeoPoint(latit, longi);
controller.animateTo(ourLocation);
controller.setZoom(14);
if//myItemizedOverlay.addItem(ourLocation, "myPoint1", "myPoint1");
OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
CustomPinpoint custom = new CustomPinpoint(d, Map.this);
custom.insertPinpoint(overlayItem);
overlayList.add(custom);}
map.setSatellite(false);
map.setStreetView(true);
これは私のonlocationchangedです
public void onLocationChanged(Location l) {
// TODO Auto-generated method stub
latit = (int) (l.getLatitude() *1E6);
longi = (int) (l.getLongitude() *1E6);
GeoPoint ourLocation = new GeoPoint(latit, longi);
OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
CustomPinpoint custom = new CustomPinpoint(d, Map.this);
custom.insertPinpoint(overlayItem);
overlayList.add(custom);
}
現在の場所にある複数のドローアブルの場合、解決策は最後に追加されたピンポイント(ジオポイント)のみを表示することだと思いましたが、これを行う方法がわかりません。
両方の問題について私を助けていただければ幸いです。ありがとうございました !
PS:デバイスが車の中など、ある速度で動くものの中にあるとき、ドローアブルが継続的に動いているように見える必要があります。