Select to view content in your preferred language

Custom tilesource/layer in the new (100) november release?

2868
10
01-05-2017 11:37 PM
SheesUl-Hassan
New Contributor

Hi,

Ref. Creating a custom TileServiceLayer in ArcGIS Android | ArcGIS Blog 

Is this feature/possibility removed from the new v100 november release?

Cant see any way that I can create a custom MBTiles layer or other own layers?

Thanks for all help.

Regards,

Shees

Tags (1)
0 Kudos
10 Replies
ShellyGill1
Esri Contributor

Hi Shees,

I'm afraid this didn't make it into the 100.0 release of the SDK. We know this is important and it's definitely something we want to add. However, I cant give you a definite date for when this will be available as it's not been addressed yet. I'll add this question to the internal issue, and will come back and update this when I'm able to give more information.

Sorry couldn't be more help,

Shelly

SheesUl-Hassan
New Contributor

Thank you for the answer Shelly.

Hope this is a feature that will be prioritized and will be available soon. Looking forward to getting feedback on when this is implemented. Thank you!

Regards,

Shees

0 Kudos
NathanMellor
Regular Contributor

This is a mandatory feature for my needs. 

To clarify: 

I would need to be able to retrieve tiles from storage in a custom format, as in the MBTiles example referenced.

I would also need to be able to retrieve tiles from Tile Servers which don't necessarily have ARCGIS, but do have tiles that can be retrieved through a simple URL Template (ie server.domain.com/tiles/{$z}/{$x}/{$y}.png, etc). 

The ImageTiledLayer is the closest equivalent to TileServiceLayer in the 100 version, but based on analysis, does not appear to be meant for subclassing. 

At first glance, I wondered if this library was intended *only* for use with ArcGIS server map sources. Is that the case?

0 Kudos
ShellyGill1
Esri Contributor

Hi Nathan - correct that ImageTiledLayer in the 100.0 release is not designed for extensibility. We're working on a solution for exactly the kind of pattern that you describe. Keep an eye on info coming out of the Developer Summit this week, as potentially there may be information on planned new functionality like this.

ShellyGill1
Esri Contributor

An update to this questions - with the latest release of the ArcGIS Runtime, you can now create custom tiled layers, using the WebTiledLayer class. This sample demonstrates how to do this - arcgis-runtime-samples-android/web-tiledlayer at master · Esri/arcgis-runtime-samples-android · GitH... 

AlexanderNohe1
Honored Contributor

Awesome sgill-esristaff‌!

Thanks for all the hardwork that your team put into the latest release.  I am really excited to use it.

0 Kudos
PatrickBolduc
Emerging Contributor

Shelly Gill‌,

If I am not mistaken, the WebTiledLayer class does not help with the OP question regarding the possibility to load a MBTiles map. This is a mandatory feature for us to be able to migrate from v10 to v100 as we need to load unsupported map formats that are stored locally on the Android device.

Is there a way to do this using ArcGIS v100.1 ?

Regards,

Patrick

AlexanderNohe1
Honored Contributor

Using the WebTiledLayer class from the new runtime and supplying a template url matching the URL found in the MapBox console, allows the user to see their MBTiles in their map.  This is all from a connected application.

I believe the URL needs to follow this convention :

http://site.domain.com/something/{level}/{col}/{row}/?access_token=asdjhksdjfhaalksjdhflksadhjf

The important bit being the {level}/{col}/{row} information.  You can alternatively supplement this by extending the class and modifying the getTileURL(TileKey tileKey) method.

If you are looking for the LocalMBTiles (generally a file stored on the device as a *.mbtile) and how to display them on a device, that might warrant a new question as this one was done to address the Nathan Miller follow up question.

Hope this helps!

NathanMellor
Regular Contributor

The WebTiledLayer class is not meant for a local MBTiles.

However, I do believe you could subclass ImageTileLayer, taking care to implement GetTileDataAsync and accomplish that.

Has anyone tried it?

0 Kudos