MBXMapKit с использованием локального файла базы данных .mbtiles

Я хотел бы использовать MapKit (на osx) для отображения пользовательских плиток карты из базы данных .mbtiles (sqlite) типа, экспортированного из TileMill.

MBXMapKit отлично выглядит и почти то, что мне нужно. Я мог видеть, как с очень небольшими изменениями MBXMapKit можно настроить так, чтобы он указывал на локальный файл базы данных .mbtiles.

Есть ли способ использовать структуру MBXMapKit для достижения этого без настройки? Я читал документы и не мог найти прямого ответа. Я нашел частный метод на MBXOfflineMapDatabase под названием -initWithContentsOfFile:, который звучит многообещающе и выглядит так, как будто он делает то, что мне нужно — есть ли что-то, на что следует обратить внимание, если я выставлю и использую этот метод?

Альтернативным вариантом является создание подкласса MKTileOverlay и использование -loadTileAtPath:result:, что легко сделать, но также требует управления подключением к файлу sqlite и т. д.


person Sam Hatchett    schedule 27.06.2014    source источник
comment
быстрое продолжение: похоже, что локальный кэш sqlite MBXMapKit представляет собой совершенно другую схему, чем .mbtiles, что очень плохо.   -  person Sam Hatchett    schedule 27.06.2014


Ответы (2)


Взгляните на это, чтобы узнать последние новости о поддержке MBTiles:

https://github.com/mapbox/mbxmapkit/issues/3

Скорее всего, это будет в следующем релизе. Это должно быть отличным и отделенным как от кэша нормальной производительности (NSURLCache), так и от автономных баз данных (также поддерживаемых SQLite), которые предназначены для загрузки отдельных плиток, помещаемых в кэш один за другим.

person incanus    schedule 27.06.2014
comment
хорошо, пока нет, но скоро. оказывается, довольно легко делать вещи db с пулом базы данных FMDB, и это достаточно быстро. Спасибо за помощь! - person Sam Hatchett; 01.07.2014

Мне потребовалось довольно много времени, чтобы разобраться с этим, но вот ссылка, которая привела меня на правильный путь.

https://github.com/mapbox/mbxmapkit/pull/110/commits/8b9fbf3fd56ae804a38c737305f128fd43a8225d

По какой-то причине метод _mbtilesOverlay = [[MBXMBTilesOverlay alloc] initWithMBTilesURL:mbtilesURL]; нельзя использовать в последней версии MBXMapKit. Я просто заменил файлы .m и .h файлами в ссылке и использовал MBXViewController.m в качестве руководства, чтобы получить вид карты, чтобы показать наложение плитки.

person Shayno    schedule 15.08.2016