以编程方式创建mapView

时间:2013-04-12 09:52:11

标签: java android android-mapview instantiation osmdroid

我想以编程方式实例化MapView。我正在使用Osmdroid。我写了这个,但没有显示地图(有或没有设置参数)!怎么了?

    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);

1 个答案:

答案 0 :(得分:4)

我真的很想帮助你,因为你的帖子帮助我解决了以编程方式显示osmdroid地图的问题:我正在将地图视图添加到线性布局中,但是不像你那样包括布局参数,并且地图空白。谢谢!

我认为您的问题是您没有指定 磁贴源 。这是我使用的代码,它成功地绘制了地图。除了添加tile源,用值替换常量以及将变量名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);
}

当我开始使用osmdroid时,我使用了这个helpful page,当我在杂草中进行自我修改时,它会进行良好的理智检查。

我希望这会有所帮助......再次感谢你为我提供的暗示!