java - 以编程方式创建 map View

标签 java android android-mapview instantiation osmdroid

我想以编程方式实例化 MapView。我正在使用 Osmdroid。我写了这个,但是 map 不显示(无论设置参数还是不设置参数)!怎么了?

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

最佳答案

我真的很想帮助你,因为你的帖子帮助我解决了以编程方式显示 osmdroid map 的问题:我像你一样将 map View 添加到线性布局,但没有像你那样包括布局参数,并且 map 一片空白。谢谢!

我认为您的问题是您没有指定图 block 源。这是我使用的代码,它成功绘制了 map 。除了添加图 block 源、用值替换常量以及将变量名称 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 时,当我自己进行修改时,它可以进行良好的健全性检查。

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

关于java - 以编程方式创建 map View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968204/

相关文章:

java - 将 id 设置为 JavaFX Canvas 上的对象

java - 实例化列表 VS 代理列表 VS 检查空引用?

java - 使用 jackson 映射时如何适本地覆盖 equals(Object o)

android - 在我的应用程序中打开并查看 pdf

安卓 : how to detect already connected usb device?

android - 无法在Android Studio上解析符号'mapView'

android - 在 Android 中将大量叠加层加载到 MapView 的最佳方法是什么?

java - 如何存储这些值

android - 如何在同一个 api 调用中使用 @part 和 @field 进行改造

java - 双击 : zoom on Android MapView?