Источники плиток Osmdroid показывают пустую карту android - PullRequest
0 голосов
/ 20 декабря 2018

мой код ниже

mapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, ".png",
    new String[] { "https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/{z}/{x}/{y}.png?key=xxxxxxxxxx" }) {

    @Override
    public String getTileURLString(long pMapTileIndex) {
        return getBaseUrl()
                + MapTileIndex.getZoom(pMapTileIndex)
                + "/" + MapTileIndex.getY(pMapTileIndex)
                + "/" + MapTileIndex.getX(pMapTileIndex)
                + mImageFilenameEnding;
    }
});

https://github.com/osmdroid/osmdroid/wiki/Map-Sources

Моя версия 6.0.3 map blank image

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы настроили пользовательский агент?

 protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        IConfigurationProvider provider = Configuration.getInstance();
        provider.setUserAgentValue(BuildConfig.APPLICATION_ID);

        provider.setOsmdroidBasePath(getStorage());
        provider.setOsmdroidTileCache(getStorage());

        // provider.setDebugMapTileDownloader(true);
        //provider.setDebugTileProviders(true);

        setContentView(R.layout.osm_activity);
}
0 голосов
/ 20 декабря 2018

Обратите внимание на строку, которую вы скопировали, вставленную в ваш код:

https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/{z}/{x}/{y}.png?key=xxxxxxxxxx"

Это, очевидно, пример из документации вашего провайдера.{z}, {x} и {y} являются переменными и должны динамически добавляться osmdroid.И xxxxx должен быть заменен вашим ключом API.

Вы должны использовать только базовую часть в своем коде:

https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/

Остальная часть URL добавляется в методе getTileURLString.У вас там тоже есть ошибка.Как вы можете видеть в примере, порядок параметров должен быть z (zoom) x и y.В вашем коде поменялись местами x и y.

В примере также намекает на то, что у вас должен быть некоторый ключ API.Так что проверьте документацию поставщика плитки снова и получите ключ, если необходимо.Вы можете передать ключ через параметр, который теперь содержит только «.png».Вам нужно изменить его на «.png? Key = yourkeyandnotthisstringorxxxxx».

В конце вы должны получить что-то вроде этого:

mapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, ".png?key=yourkeyandnotthisstringorxxxxx",
    new String[] { "https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/" }) {

    @Override
    public String getTileURLString(long pMapTileIndex) {
        return getBaseUrl()
                + MapTileIndex.getZoom(pMapTileIndex)
                + "/" + MapTileIndex.getX(pMapTileIndex)
                + "/" + MapTileIndex.getY(pMapTileIndex)
                + mImageFilenameEnding;
    }
});
...