Osmdroid无法显示来自zip文件的离线地图

问题描述

我已经尝试了好几个小时才能将离线地图加载到zip文件中,但是无法 我有离线地图,我将其放在sdcard的osmdroid文件夹中。
压缩包含folderMapName-> zoomlevel-> x-> y.jpg 即使我从日志中得知磁贴不存在
2020-10-05 18:09:33.981 17548-18405/com.example.targetchaser D/OsmDroid: MapTileProviderBase.mapTileRequestFailed(): /7/74/54

即使此特定图块确实存在,

注意我正在使用osmdroid版本6.1.8。

enter image description here

这是负责地图的片段代码

package com.example.targetchaser.special

import android.os.Bundle
import android.os.Environment
import android.os.StrictMode
import android.preference.PreferenceManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.example.targetchaser.R
import org.osmdroid.api.IMapController
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants
import org.osmdroid.tileprovider.tilesource.ITileSource
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.tileprovider.tilesource.XYTileSource
import org.osmdroid.tileprovider.util.CloudmadeUtil.DEBUGMODE
import org.osmdroid.util.GeoPoint
import org.osmdroid.views.MapView
import timber.log.Timber
import java.io.File
import java.util.*


class MapFragment : Fragment() {
    private lateinit var map: MapView

    companion object {
        fun newInstance() = MapFragment()
    }

    private lateinit var viewModel: MapViewModel

    override fun onCreateView(
        inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.map_fragment,container,false)
        map = view.findViewById(R.id.map)
        return view
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        Configuration.getInstance()
            .load(requireContext(),PreferenceManager.getDefaultSharedPreferences(requireContext()))
        Configuration.getInstance().isDebugMapView = true
        Configuration.getInstance().isDebugMode = true
        Configuration.getInstance().isDebugTileProviders = true
        Timber.d("configuring the map")
        val policy =
            StrictMode.ThreadPolicy.Builder().permitAll().build()
        StrictMode.setThreadPolicy(policy)
        viewModel = ViewModelProvider(this).get(MapViewModel::class.java)
        initializeMap()
    }

    private fun initializeMap() {
        DEBUGMODE = true
        val tileSource: ITileSource = XYTileSource(
            "mapName",7,12,256,".jpg",null
        )
        map.setUseDataConnection(false)

        map.setTileSource(tileSource)
        // map.setTileSource(TileSourceFactory.MAPNIK);
        setStartingPoint()
    }

    private fun setStartingPoint() {
        val mapController = map.controller;
        mapController.setZoom(7.0)
        val startPoint =  GeoPoint(29.818244186438754,31.011825548219626)
        mapController.setCenter(startPoint);
    }

    override fun onPause() {
        super.onPause()
        map.onPause()
    }

    override fun onResume() {
        super.onResume()
        map.onResume()
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)