Широта и долгота ограничительной рамки OSMDroid Offline MBTiles во время выполнения

Я ищу способ прочитать мои автономные MBtiles и найти ограничивающую рамку с точки зрения широты и долготы во время выполнения. Я не хочу жестко кодировать ограничивающую рамку. Я хочу иметь возможность читать из файла MBTiles и определять центр на основе верхних левых и нижних правых значений широты и долготы. Предполагается, что карта прямоугольная (это хорошее предположение). Это простой расчет средней точки триггера.

 MapView.getBoundingBox

Это возвращает только ограничивающую рамку карты, отображаемую на экране. Мне нужно прочитать ограничивающую рамку всего файла карты Offline .Mbtiles.

Кроме того, как мне прочитать во время выполнения максимальный и минимальный масштаб файла .mbtiles?


person user914425    schedule 22.07.2015    source источник
comment
Вы читали спецификацию?   -  person CL.    schedule 22.07.2015


Ответы (1)


Насколько я знаю, MBTiles — это просто база данных Sqlite с другим расширением. Это означает, что вы можете выполнять некоторые запросы, такие как

select max(z) from tiles; //максимальный уровень масштабирования

select min(z) from tiles; //минимальный уровень масштабирования

Получение границ немного сложнее, так как вам придется переводить из системы координат X, Y в широту / долготу (это то, что вы хотите, верно?)

Запустите те же запросы, что и выше, чтобы получить минимальные/максимальные значения X и Y. Затем запустите один из алгоритмов, опубликованных на вики OSM, например этот http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_bounding_box для обратного перевода на широту/долготу.

Я почти уверен, что это уже реализовано в OsmDroid, поэтому все, что вам нужно, это вызов функции.

person spy    schedule 23.07.2015