ThinkGeo.com    |     Blog    |     Wiki    |     Support

Offline vector tiles support question

Hello,

I have a mobile application that has to display a map. One of the requirements is that the map of an entire city must be available offline. Cities can be big; and covered areas could reach 400km². As a result, I wish to avoid canvas tiles and instead use a vector tile based storage, in order to reduce the memory footprint of the tiles database on the device’s storage.

What are the options available in the Android Edition of ThinkGeo to read this kind of data source? So far I could not find much in the official docs: the Bing, Google, OSM and MapBox layers all seem to use raster tiles, and it doesn’t seem I can programmatically manage offline data with these sources. I have seen the LayerOverlay + SqliteBitmapTileCache combination, but its name seems to imply raster tile format.

As a side question, is there any declarative way to style the features on the map (stuff like CartoCSS, SLD, etc…) ?

Thank you for your help

Hi Xavier,

I am not sure what’s the means of vector tile and raster tile here, because I think for cached tile, it only should be vector. The raster only works for some special data format like JP2, ecw etc.

If you want to make the layer render on user’s mobile, you should want to provide the shape file and then it can be rendered there, but I think more popular solution should be build cache tile images on server side, then zip them by city and let user choose to download it for offline works. In fact the Bing, Google tiles is this mode, it only provide the existing tiles but not data file for render, so the problem here should be how to generate the tile on server side and render then on mobile side.

We have a utility CacheGenerator, you should can find it on our wiki.thinkgeo.com, I hadn’t tested whether it can works well with Android edition, but I think you can have a try.

Wish that’s helpful.

Regards,

Don

Thanks for your reply. To rephrase what I meant, I want to make sure that I store vectors on the device, instead of JPG or PNG images, which take too much space.

I am worried about this because the API contains a lot of hints that images are used (for example, the name of SqliteBitmapTileCache suggests that it uses images, and no vectors).

I’ll have a look at the cache generator and will get back to you when after I see how it works.

Hi Xavier,

It looks I make a mistake about the vector image, it looks the format like SVG should be what you want.

But we don’t support the format like SVG, so I suggest you choose the format like PNG, which should get smaller size than jpg etc.

Regards,

Don

Hi Xavier,

Sorry that Ethan confused your question before. Vector Tile is really a good format for your scenarios, it can be cached locally and drawn with any styles you want. You can see what we have support in JavaScript at https://github.com/ThinkGeo/VectorMap-js, all the functionalities will be integrated into all Map Suite products pretty soon, including Android and iOS SDK, it allows you to style your features on the map with a CSS similar file (stuff like CartoCSS, SLD etc…), you can check the demos we have for our World Street Global Map at https://github.com/ThinkGeo/WorldStreets-Styles, corresponding demos are https://maps.thinkgeo.com/ .

Now guys from one team is speeding up the release of “Vector Tile Integration of all Map Suite products”, including Android SDK, a well-tested version should be available by the end of next month - around February 24th 2019. We will send another email to you later.

Thanks,
Johnny