не показывает карту 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 для тестирования. Я прочитал этот сообщение, но что это значит?


person sayres kabir    schedule 24.06.2017    source источник


Ответы (1)


Вы имеете в виду, что MapView не отображается или фрагменты карты не отображаются?

В моем приложении, использующем osmdroid, у меня были проблемы с инициализацией MapView до того, как пользователь мог принять разрешения, поэтому я создал стартовую страницу как MainActivity (в основном, чтобы пользователь мог принимать разрешения) и поместил MapView во фрагмент в другом действии. Если хотите посмотреть, исходный код доступен по адресу https://github.com/frodegill/GridWalking

Кроме того, последние версии osmdroid хранят тайлы в sqlite, а не в файловой системе, поэтому вам не нужен WRITE_EXTERNAL_STORAGE.

person Frode Roxrud Gill    schedule 24.06.2017
comment
это означает, что мой дисплей пустой и просто белый. - person sayres kabir; 24.06.2017