Android osmdroid中未显示地图
我试图使用Android Studio制作一个osmdroid项目,但没有显示任何地图。我只有一个白格子 在我的xml文件中,我输入了以下代码:Android osmdroid中未显示地图,android,openstreetmap,osmdroid,Android,Openstreetmap,Osmdroid,我试图使用Android Studio制作一个osmdroid项目,但没有显示任何地图。我只有一个白格子 在我的xml文件中,我输入了以下代码: <?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="..." android:layout_width="match_parent" android:layout_height="match_parent" android:orientati
<?xml
version="1.0" encoding="utf-8"
?>
<LinearLayout
xmlns:android="..."
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<org.osmdroid.views.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
tilesource="Mapnik"
/>
</LinearLayout>
我在清单中添加了以下权限:
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name="android.permission.INTERNET"
/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
你知道我怎样才能解决这个问题吗
我使用了osmdroid android:5.6.4(我也尝试了其他版本,但所有版本都有相同的问题)使用osmdroid lib的6.1版本和更高版本。遵循以下步骤: 1。从xml文件中删除tilesource属性
tilesource="mapnik"
2。在调用映射的findviewbyId()之前,请先输入此代码片段
final Context ctx = getApplicationContext();
Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID);
mMap = (MapView) findViewById(R.id.map);
3.在findViewbyId()之后添加以下snnipet
您的最终代码应该如下所示:
activity.java
private MapView mMap;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
final Context ctx = getApplicationContext();
Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID);
mMap = (MapView) findViewById(R.id.map);
mMap.setTileSource(TileSourceFactory.MAPNIK);
mMap.setMultiTouchControls(true);
mMap.setBuiltInZoomControls(true);
}
.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<org.osmdroid.views.MapView android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
您是否设置了用户代理?或者查看wiki中的任何示例或指南?您的目标api是什么?
private MapView mMap;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
final Context ctx = getApplicationContext();
Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID);
mMap = (MapView) findViewById(R.id.map);
mMap.setTileSource(TileSourceFactory.MAPNIK);
mMap.setMultiTouchControls(true);
mMap.setBuiltInZoomControls(true);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<org.osmdroid.views.MapView android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>