2013-04-12 3 views
2

Я хочу программно создать экземпляр MapView. Я использую Osmdroid. Я написал это, но карта не отображается (с настройкой параметров или без нее)! Что не так?Создать mapView программно

LinearLayout contentLayout = (LinearLayout) findViewById(R.id.contentLayout); 

    m_mapView = new MapView(this, 10); 

    org.osmdroid.views.MapView.LayoutParams mapParams = new org.osmdroid.views.MapView.LayoutParams(
      org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, 
      org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, 
      null, 0, 0, 0); 

    m_mapView.setBuiltInZoomControls(true); 

    m_mapView.setMultiTouchControls(false);  

    mapController = this.m_mapView.getController(); 
    mapController.setZoom(MAP_DEFAULT_ZOOM); 
    m_mapView.getController().setCenter(new GeoPoint(MAP_DEFAULT_LATITUDE, MAP_DEFAULT_LONGITUDE)); 

    m_mapView.invalidate(); 

    contentLayout.addView(m_mapView,mapParams); 

ответ

4

Я действительно хочу, чтобы помочь вам, потому что ваш пост помог мне с моей проблемой отображения osmdroid карты программно: я добавлял вид карты к линейной компоновки, как вы делали, но не включая параметры макета, как вам и карта приближалась. Спасибо!

Я думаю, ваша проблема в том, что вы не указали источник плитки. Вот код, который я использовал, и он успешно нарисовал карту. Он идентичен вашему, кроме добавления источника плитки, замены констант значениями и изменения имени переменной mapController на m_mapController, который, как я полагаю, был таким же, как и ваш mapView. Я просто не хотел, чтобы кто-то думал, что он определен в методе и не показан.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    LinearLayout contentLayout = (LinearLayout) findViewById(R.id.contentLayout); 
    m_mapView = new MapView(this, 10); 
    m_mapView.setTileSource(TileSourceFactory.MAPNIK); 
    org.osmdroid.views.MapView.LayoutParams mapParams = new org.osmdroid.views.MapView.LayoutParams(
      org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, 
      org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, 
      null, 0, 0, 0); 
    m_mapView.setBuiltInZoomControls(true); 
    m_mapView.setMultiTouchControls(false);  
    m_mapController = this.m_mapView.getController(); 
    m_mapController.setZoom(15); 
    m_mapView.getController().setCenter(new GeoPoint(51496994, -134733)); 
    m_mapView.invalidate(); 
    contentLayout.addView(m_mapView, mapParams); 
} 

Я использовал этот helpful page, когда я начал с osmdroid, и это делает хорошую проверку вменяемости, когда я уезжаю в сорняках с собственными модификациями.

Я надеюсь, что это поможет ... еще раз спасибо за подсказку, которую вы мне предоставили!

Смежные вопросы