2011-01-12 66 views
3

我正在嘗試創建MapView的擴展版本。Android Custom MapView

問題是當定義了擴展版本MapView時,mapview不能平移。

我正在執行onTouchListener在我的自定義地圖視圖中。

我也想知道是否有任何方法可以從我可以平移mapview。

使用相同的源代碼使用股票版本的MapView時,問題不會持續存在。

編輯

MyMapView來源:

public class MyMapView extends MapView{ 

    public MyMapView(Context context, String apiKey) { 
     super(context, apiKey); 

    } 
    public MyMapView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 
    public MyMapView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if(event.getAction()==MotionEvent.ACTION_DOWN){ 
      Log.v("MyMapView","Touched"); 
     } 

     return false ; 
    } 



} 

onCreate()MapActivity

protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.mapper); 
    mMapView=(MyMapView) findViewById(R.id.mapper_map); 
    mMapView.setSatellite(false);  

} 
+0

我懷疑這可能是因爲你從一些onTouch方法返回true - 嘗試返回false;這應該允許你的類做一些事情,然後讓觸摸事件傳播到基類來做它的東西。但讓我們看看你的代碼。 – 2011-01-12 12:54:23

+0

@ John J Smith,代碼在帖子中更新。 – Shardul 2011-01-13 06:55:43

回答

0

我錯了。

mMapView=(MyMapView) findViewById(R.id.mapper_map); 

應該

mMapView=(MapView) findViewById(R.id.mapper_map); 

這解決了問題。

Thankx反正。

1

你的onTouchEvent()應該返回false,否則會消耗事件。

您還可以實例化MapController並使用它來更改視圖。以下是我正在處理的應用中的代碼段:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mapview); 

    myMapView = (MapView) findViewById(R.id.myMapView); 
    myMapView.setBuiltInZoomControls(true); 
    myMapController = myMapView.getController(); 

    myPoint = new GeoPoint(0, 0); 
    myMapController.setCenter(myPoint); 
    myMapController.zoomToSpan(360 * MILLION, 360 * MILLION); 
}