【问题标题】:Create mapView programmatically以编程方式创建 mapView
【发布时间】:2013-04-12 09:52:11
【问题描述】:

我想以编程方式实例化 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);

【问题讨论】:

    标签: java android android-mapview instantiation osmdroid


    【解决方案1】:

    我真的很想帮助你,因为你的帖子帮助我解决了以编程方式显示 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);
    }
    

    当我开始使用 osmdroid 时,我使用了这个 helpful page,当我自己修改杂草时,它可以很好地检查。

    我希望这会有所帮助...再次感谢您提供给我的提示!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2013-03-28
      • 2013-07-25
      • 2013-07-22
      • 2018-06-04
      • 2015-03-17
      • 2013-11-24
      相关资源
      最近更新 更多