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

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

 MapView.getBoundingBox

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

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

1 ответ

AFAIK, 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, чтобы перевести обратно на Lat / Lon.

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

Другие вопросы по тегам