我正在一個Treasure Quest中引導用戶度過難關。我有問題 顯示地圖我的當前位置在那裏尋求點也顯示Android爲MapView添加新的點(不刷新)
我伸出ItemizedOverlay
public class QuestItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays= new ArrayList<OverlayItem>();
public QuestItemizedOverlay(Drawable defaultmarker) {
super(boundCenterBottom(defaultmarker));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
public void removeItem(int index) {
mOverlays.remove(index);
populate();
}
@Override
public int size() {
return mOverlays.size();
}
}
我得到了聽衆的時候我的位置變化:
private final LocationListener locationlistener= new LocationListener() {
public void onLocationChanged(Location location) {
Log.i("LOCATION_UPDATED","");
updateWithNewLocation(location);
mapview.invalidate();
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) { }
public void onStatusChanged(String provider, int sttus, Bundle extras) { }
};
而且updatewithNewlocation方法有以下代碼:
private void updateWithNewLocation(Location location) {
Double curlat=location.getLatitude();
Double curlong=location.getLongitude();
GeoPoint point=new GeoPoint((int)(curlong*1E6),(int) (curlat*1E6));
OverlayItem overlayitem=new OverlayItem(point,"I'm here","This is where you are");
Drawable marker=this.getResources().getDrawable(R.drawable.eplogo_marker);
overlayitem.setMarker(marker);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.clear();
mapOverlays.add(itemizedoverlay);
}
使用DDMS進行調試(只是測試)監聽器完美工作,我的地圖視圖mOverlays隨着我使用DDMS改變位置而增長,但是當我調用mapview.invalidate()時,發生了這種情況
那是刷新mapview的方式嗎?
還有一個問題,如果mapOverlay有多個itemizedoverlay,每個都有一些標記,會發生什麼?
在此先感謝
一切看起來都很好。我在updateWithNewLocation中缺少的唯一代碼是「mapOverlays = yourMapView.getOverlays();」。或者,也許你在其他地方初始化它。你有例外嗎? – Vincent 2011-04-20 15:47:24