仅osmdroid地图视图网格,无需外部存储权限即可使用osmdroid?

问题描述 投票:0回答:1

我的osmdroid地图仅显示一个空网格,为什么会这样?enter image description here

我已经在这里搜索了一些相同的问题,并尝试了它,但我无法解决问题。我阅读了osmdroid需要sdcard /外部存储的权限。我不能使用它吗?因为我的设备不支持外部存储或SD卡。这是我的[[code

super.onCreate(savedInstanceState); Context context = getApplicationContext(); Configuration.getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context)); //Mapbox.getInstance(directmap.this, getString(R.string.access_token)); IConfigurationProvider provider = Configuration.getInstance(); File basePath = new File(getCacheDir().getAbsolutePath(), "osmdroid"); //provider.setUserAgentValue(BuildConfig.APPLICATION_ID); provider.setOsmdroidBasePath(basePath); File tileCache = new File(provider.getOsmdroidBasePath().getAbsolutePath(), "tile"); provider.setOsmdroidTileCache(tileCache); setContentView(R.layout.activity_directmap); ButterKnife.bind(this); final Context context1 = getApplicationContext(); Configuration.getInstance().load(context1, PreferenceManager.getDefaultSharedPreferences(context1)); Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID); mapView = findViewById(R.id.mapViewosm); mapView.setTileSource(TileSourceFactory.MAPNIK); mapView.setMultiTouchControls(true); mapView.setBuiltInZoomControls(true); // mapView = (MapView) findViewById (R.id.mapViewosm); // button = (Button) findViewById(R.id.startButton); roadManager = new GraphHopperRoadManager(getString(R.string.apikey), true); manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); route.setOnClickListener(this); //mapView.onCre(savedInstanceState); //mapView.getMapAsync(this); startIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_mark); //ambil lokasi pendonatur lat = -5.402213; //getIntent().getDoubleExtra("latitude", 0);, lng = 105.264113;//getIntent().getDoubleExtra("longitude", 0); setupOverlay(); setupMap(); addMarker(); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context context = getApplicationContext(); Configuration.getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context)); //Mapbox.getInstance(directmap.this, getString(R.string.access_token)); IConfigurationProvider provider = Configuration.getInstance(); File basePath = new File(getCacheDir().getAbsolutePath(), "osmdroid"); //provider.setUserAgentValue(BuildConfig.APPLICATION_ID); provider.setOsmdroidBasePath(basePath); File tileCache = new File(provider.getOsmdroidBasePath().getAbsolutePath(), "tile"); provider.setOsmdroidTileCache(tileCache); setContentView(R.layout.activity_directmap); ButterKnife.bind(this); final Context context1 = getApplicationContext(); Configuration.getInstance().load(context1, PreferenceManager.getDefaultSharedPreferences(context1)); Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID); mapView = findViewById(R.id.mapViewosm); mapView.setTileSource(TileSourceFactory.MAPNIK); mapView.setMultiTouchControls(true); mapView.setBuiltInZoomControls(true); // mapView = (MapView) findViewById (R.id.mapViewosm); // button = (Button) findViewById(R.id.startButton); roadManager = new GraphHopperRoadManager(getString(R.string.apikey), true); manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); route.setOnClickListener(this); //mapView.onCre(savedInstanceState); //mapView.getMapAsync(this); startIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_mark); //ambil lokasi pendonatur lat = -5.402213; //getIntent().getDoubleExtra("latitude", 0);, lng = 105.264113;//getIntent().getDoubleExtra("longitude", 0); setupOverlay(); setupMap(); addMarker(); } private void setupMap() { // setting tile map // mapController = mapView.getController(); BingMapTileSource.setBingKey(getString(R.string.bingkey)); BingMapTileSource bingMap = new BingMapTileSource(null); bingMap.setStyle(BingMapTileSource.IMAGERYSET_ROAD); // menambah overlay ke dalam map mapView.getOverlays().add(rotationGestureOverlay); mapView.getOverlays().add(compassOverlay); mapView.getOverlays().add(myLocationNewOverlay); mapView.getOverlays().add(roadNodeMarkers); //setting mapView mapView.setTileSource(bingMap); mapView.setTilesScaledToDpi(true); mapView.setMinZoomLevel(1.0); mapView.setMaxZoomLevel(21.0); mapView.setMultiTouchControls(true); mapView.setUseDataConnection(true); mapView.getZoomController().setVisibility(CustomZoomButtonsController.Visibility.NEVER); mapController.animateTo(new GeoPoint(-5.402213, 105.264093)); } private void addMarker() { Marker destMarker = new Marker(mapView); destPoint = new GeoPoint(lat, lng); destMarker.setPosition(destPoint); destMarker.setTitle(getIntent().getStringExtra("title")); destMarker.setSubDescription(getIntent().getStringExtra("username")); destMarker.setIcon(getDrawable(R.drawable.ic_mark)); mapView.getOverlays().add(destMarker); mapView.invalidate(); }
这是我的

清单

--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我该如何解决这个问题?
android openstreetmap osmdroid
1个回答
0
投票
因此您没有提到您正在使用哪个版本的osmdroid或android,但是在配置设置上没有任何麻烦,它将默认为应用程序专用存储,应该照常工作。它应该默认为/data/data/yourAppPackageName/osmdroid/

如果默认设置不起作用(在重置配置实例之后),请尝试设置上述显式路径。

© www.soinside.com 2019 - 2024. All rights reserved.