【问题标题】:map is not visible in OpenStreetMap (osm)地图在 OpenStreetMap (osm) 中不可见
【发布时间】:2020-03-25 11:40:04
【问题描述】:

我的目标是为 android 构建一个简单的应用程序。该应用程序需要一些来自 OpenStreetMap (OSM) 的地图数据。我决定在我的小项目中使用 osmdroid。现在我已经接近我想看到的结果了,对我来说只有一个小困难。如果我现在尝试运行该应用程序,则没有错误(异常或错误),但不幸的是我没有看到地图:

我的猜测是@Override public void onCreate() 类中的命令行是必需的。但是如果我删除命令行并将其设置为“真实代码”,那么getInstance().load(...) 方法就会出错,所以我的想法是我的Configuration 类有问题。没有建议我的代码查找/删除错误

这就是我的 MainActivity.java 类:


import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.views.MapView;

import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;

import org.osmdroid.views.MapView;

public class MainActivity extends Activity {

    MapView map = null;
    @Override public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        Context ctx = getApplicationContext();
        //Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));

        setContentView(R.layout.activity_main);

        map = (MapView) findViewById(R.id.map);
        map.setTileSource(TileSourceFactory.MAPNIK);
    }

    public void onResume(){
        super.onResume();
        map.onResume();
    }

    public void onPause(){
        super.onPause();
        map.onPause();
    }

}```

【问题讨论】:

  • 您在Configuration.getInstance().load() 收到的确切错误是什么?
  • error: cannot find symbol Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));

标签: java android api openstreetmap osmdroid


【解决方案1】:

我自己找到了答案。错误是错误的导入。 import android.content.res.Configuration; 这是正确的:import org.osmdroid.config.Configuration; 我的实际 mainActivity 现在看起来像这样:


import org.osmdroid.api.IMapController;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;

import android.app.Activity;
import android.content.Context;
import org.osmdroid.config.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;


public class MainActivity extends Activity {

    MapView map = null;
    @Override public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        Context ctx = getApplicationContext();

        Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));


        setContentView(R.layout.activity_main);

        map = (MapView) findViewById(R.id.map);
        map.setTileSource(TileSourceFactory.MAPNIK);

        map.setBuiltInZoomControls(true);
        map.setMultiTouchControls(true);



        IMapController mapController = map.getController();
        mapController.setZoom(13);

        GeoPoint startPoint = new GeoPoint(52.516181, 13.376935);
        mapController.setCenter(startPoint);
    }

    public void onResume(){
        super.onResume();
        map.onResume();
    }

    public void onPause(){
        super.onPause();
        map.onPause();
    }



}```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多