2011-01-12 3 views
3

Я пытаюсь создать расширенную версию MapView.Android Custom MapView

Проблема заключается в том, что определена расширенная версия MapView, карта не панорамируется.

Я реализую onTouchListener Внутри моего пользовательского вида карты.

Я также хочу знать, есть ли какие-либо методы, откуда я могу панорамировать карту.

Проблема не сохраняется, когда версия запаса MapView используется с тем же исходным кодом.

EDIT

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 - попробуйте вернуть false; это должно позволить вашему классу сделать что-то, а затем позволить событию касания распространиться на базовый класс, чтобы сделать свой материал. Но посмотрим ваш код. –

+0

@ John J Smith, код обновлен в сообщении. – Shardul

ответ

0

Я ошибался.

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

должен быть

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

Это решает проблему.

Thankx в любом случае.

1

Ваш onTouchEvent() должен возвращать ложь, в противном случае он будет потреблять событие.

Вы также можете создать экземпляр 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); 
} 
+0

Его возвращение ложным. Но все же он теперь отвечает. – Shardul