没有在设备上显示osmdroid地图

时间:2017-06-24 07:10:22

标签: android osmdroid

我创建了一个简单的osmdroid并配置为跟随git

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>

<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" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

的build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
    applicationId "com.example.sayres.myosm"
    minSdkVersion 15
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'org.osmdroid:osmdroid-android:5.6.4'
compile 'com.github.MKergall:osmbonuspack:6.3'

}

我的活动:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Context ctx = getApplicationContext();
    //important! set your user agent to prevent getting banned from the osm servers
    Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
    setContentView(R.layout.activity_main);


    osm = (MapView) findViewById(R.id.mapView);
    osm.setTileSource(TileSourceFactory.MAPNIK);
    osm.setBuiltInZoomControls(true);
    osm.setMultiTouchControls(true);

    mc = (MapController) osm.getController();
    mc.setZoom(12);

    GeoPoint center = new GeoPoint(36.680725,48.500430);
    mc.animateTo(center);



}

@Override
protected void onResume() {
    super.onResume();
    //this will refresh the osmdroid configuration on resuming.
    //if you make changes to the configuration, use
    //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    //Configuration.getInstance().save(this, prefs);
    Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
}

但是当我运行我的应用程序时,设备上没有任何内容!我做了github上提到的所有事情,但我不知道我的问题在哪里?我的项目已安装并运行但我的设备上没有任何内容。我正在使用AVD进行测试。 我已经阅读了post但这是什么意思?

1 个答案:

答案 0 :(得分:0)

您的意思是MapView没有显示,或者没有显示地图图块?

在我的osmdroid-using应用程序中,我在用户可以接受权限之前初始化MapView时出现问题,因此我创建了一个以MainActivity开头的页面(基本上这样用户可以接受权限)并将MapView放在另一个Activity中的Fragment中。如果您想查看,可以在https://github.com/frodegill/GridWalking

获取源代码

另外,最近的osmdroid版本在sqlite而不是filesystem中存储了tile,因此你不需要WRITE_EXTERNAL_STORAGE。