地图在 OpenStreetMap (osm) 中不可见
map is not visible in OpenStreetMap (osm)
我的目标是为 android 构建一个简单的应用程序。该应用程序需要来自 OpenStreetMap (OSM) 的一些地图数据。我决定在我的小项目中使用 osmdroid。现在我已经接近我想要看到的结果了,对我来说只有一个小困难。如果我现在尝试 运行 该应用程序没有错误(异常或错误)但不幸的是我没有看到地图:
我的猜测是 @Override public void onCreate()
class 中的命令行是必需的。但是,如果我删除命令行并将其设置为 "real code",方法 getInstance().load(...)
就会出错,所以我的想法是我的 Configuration
class 有问题。我的代码没有关于 find/remove 错误
的建议
那是我的 MainActivity.java class:
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();
}
}```
我自己找到了答案。错误是错误的导入。 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();
}
}```
我的目标是为 android 构建一个简单的应用程序。该应用程序需要来自 OpenStreetMap (OSM) 的一些地图数据。我决定在我的小项目中使用 osmdroid。现在我已经接近我想要看到的结果了,对我来说只有一个小困难。如果我现在尝试 运行 该应用程序没有错误(异常或错误)但不幸的是我没有看到地图:
我的猜测是 @Override public void onCreate()
class 中的命令行是必需的。但是,如果我删除命令行并将其设置为 "real code",方法 getInstance().load(...)
就会出错,所以我的想法是我的 Configuration
class 有问题。我的代码没有关于 find/remove 错误
那是我的 MainActivity.java class:
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();
}
}```
我自己找到了答案。错误是错误的导入。 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();
}
}```