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