<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Have a map with dted and mbTile in ArcGIS Runtime SDK for Android Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51435#M393</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot for the explanation. I checked the spatial reference of the raster layer and it is null. Is there a way to set the spatial reference?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 21 Aug 2019 12:12:38 GMT</pubDate>
    <dc:creator>ThomasDumont-Goyette</dc:creator>
    <dc:date>2019-08-21T12:12:38Z</dc:date>
    <item>
      <title>Have a map with dted and mbTile</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51433#M391</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’m trying to have a map with dted and mbtiles file. Here’s the sample “raster-layer-file” modified to have a mbTile file with the dted.&amp;nbsp; If you run this example everything is fine except the dted is on top of the mbTile and I would like the opposite in order to put some transparency on the mbTile and see the relief of the dted under it. If you switch line 79 and 80 to have rasterLayer added to the map first, it doesn’t work anymore. Only the dted is shown and you can’t zoom out very far and the north and south are locked on the dted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;public class &lt;/SPAN&gt;MainActivity &lt;SPAN style="color: #000080; font-weight: bold;"&gt;extends &lt;/SPAN&gt;AppCompatActivity {

&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;private &lt;/SPAN&gt;MapView &lt;SPAN style="color: #660e7a; font-weight: bold;"&gt;mMapView&lt;/SPAN&gt;;

&amp;nbsp; &lt;SPAN style="color: #808000;"&gt;@Override
&lt;/SPAN&gt;&lt;SPAN style="color: #808000;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;protected void &lt;/SPAN&gt;onCreate(Bundle savedInstanceState) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;super&lt;/SPAN&gt;.onCreate(savedInstanceState);
&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;activity_main&lt;/SPAN&gt;);

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// retrieve the MapView from layout
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-weight: bold;"&gt;mMapView &lt;/SPAN&gt;= (MapView) findViewById(R.id.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;mapView&lt;/SPAN&gt;);

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// define permission to request
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String[] reqPermission = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;String[] { Manifest.permission.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;WRITE_EXTERNAL_STORAGE &lt;/SPAN&gt;};
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;int &lt;/SPAN&gt;requestCode = &lt;SPAN style="color: #0000ff;"&gt;2&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// For API level 23+ request permission at runtime
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;if &lt;/SPAN&gt;(ContextCompat.&lt;SPAN style="font-style: italic;"&gt;checkSelfPermission&lt;/SPAN&gt;(MainActivity.&lt;SPAN style="color: #000080; font-weight: bold;"&gt;this&lt;/SPAN&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reqPermission[&lt;SPAN style="color: #0000ff;"&gt;0&lt;/SPAN&gt;]) == PackageManager.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;PERMISSION_GRANTED&lt;/SPAN&gt;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;RasterLayer rasterLayer = loadRaster();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;Layer mbtileLayer = loadMbTile();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// create a Map with imagery basemap
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ArcGISMap map = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;ArcGISMap(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Basemap());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// add the map to a map view
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-weight: bold;"&gt;mMapView&lt;/SPAN&gt;.setMap(map);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// add layers to map
&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;79&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;map.getOperationalLayers().add(mbtileLayer);
&lt;STRONG&gt;80&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;map.getOperationalLayers().add(rasterLayer);
&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;SPAN style="color: #000080; font-weight: bold;"&gt;else &lt;/SPAN&gt;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// request permission
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ActivityCompat.&lt;SPAN style="font-style: italic;"&gt;requestPermissions&lt;/SPAN&gt;(MainActivity.&lt;SPAN style="color: #000080; font-weight: bold;"&gt;this&lt;/SPAN&gt;, reqPermission, requestCode);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }

&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;/**
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; * Using values stored in strings.xml, builds path to Shasta.tif.
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; *
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; * &lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic; font-weight: bold;"&gt;@return &lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;the path to raster file
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; */
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;private &lt;/SPAN&gt;String buildRasterPath() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get sdcard resource name
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;File extStorDir = Environment.&lt;SPAN style="font-style: italic;"&gt;getExternalStorageDirectory&lt;/SPAN&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get the directory
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String extSDCardDirName =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;this&lt;/SPAN&gt;.getResources().getString(R.string.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;raster_folder&lt;/SPAN&gt;) + &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"/dted/W074"&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get raster filename
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String filename = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"N45"&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// create the full path to the raster file
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;return &lt;/SPAN&gt;extStorDir.getAbsolutePath()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + File.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;separator
&lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ extSDCardDirName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + File.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;separator
&lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ filename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;SPAN style="color: #008000; font-weight: bold;"&gt;".DT2"&lt;/SPAN&gt;;
&amp;nbsp; }

&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;/**
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; * Loads Shasta.tif as a Raster and adds it to a new RasterLayer. The RasterLayer is then added
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; * to the map as an operational layer. Map viewpoint is then set based on the Raster's geometry.
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; */
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;private &lt;/SPAN&gt;RasterLayer loadRaster() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// create a raster from a local raster file
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Raster raster = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Raster(buildRasterPath());
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// create a raster layer
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;RasterLayer rasterLayer = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;RasterLayer(raster);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// add renderer
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;rasterLayer.setRasterRenderer(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;HillshadeRenderer(&lt;SPAN style="color: #0000ff;"&gt;35&lt;/SPAN&gt;, &lt;SPAN style="color: #0000ff;"&gt;143&lt;/SPAN&gt;, &lt;SPAN style="color: #0000ff;"&gt;8&lt;/SPAN&gt;));

&amp;nbsp;&amp;nbsp;&amp;nbsp; rasterLayer.addDoneLoadingListener(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Runnable() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808000;"&gt;@Override
&lt;/SPAN&gt;&lt;SPAN style="color: #808000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;public void &lt;/SPAN&gt;run() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #660e7a; font-weight: bold;"&gt;mMapView&lt;/SPAN&gt;.setViewpointGeometryAsync(&lt;SPAN style="color: #660e7a;"&gt;rasterLayer&lt;/SPAN&gt;.getFullExtent(), &lt;SPAN style="color: #0000ff;"&gt;50&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;return &lt;/SPAN&gt;rasterLayer;
&amp;nbsp; }

&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;private &lt;/SPAN&gt;Layer loadMbTile()
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;return &lt;/SPAN&gt;buildMbTileLayer();
&amp;nbsp; }

&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;private &lt;/SPAN&gt;Layer buildMbTileLayer()
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get sdcard resource name
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;File extStorDir = Environment.&lt;SPAN style="font-style: italic;"&gt;getExternalStorageDirectory&lt;/SPAN&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get the directory
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String extSDCardDirName =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;this&lt;/SPAN&gt;.getResources().getString(R.string.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;raster_folder&lt;/SPAN&gt;) + &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"/mbtiles"&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// get mbTile filename
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String filename = &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"Rheinmetall"&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-style: italic;"&gt;// create the full path to the mbTile file
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String path = extStorDir.getAbsolutePath()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + File.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;separator
&lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ extSDCardDirName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + File.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;separator
&lt;/SPAN&gt;&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ filename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &lt;SPAN style="color: #008000; font-weight: bold;"&gt;".mbtiles"&lt;/SPAN&gt;;

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;SQLiteDatabase database = SQLiteDatabase.&lt;SPAN style="font-style: italic;"&gt;openDatabase&lt;/SPAN&gt;(path, &lt;SPAN style="color: #000080; font-weight: bold;"&gt;null&lt;/SPAN&gt;, SQLiteDatabase.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;OPEN_READONLY&lt;/SPAN&gt;, &lt;SPAN style="color: #000080; font-weight: bold;"&gt;null&lt;/SPAN&gt;);

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;Envelope envWGS = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Envelope(-&lt;SPAN style="color: #0000ff;"&gt;180.0&lt;/SPAN&gt;, -&lt;SPAN style="color: #0000ff;"&gt;85.05112877980659&lt;/SPAN&gt;, &lt;SPAN style="color: #0000ff;"&gt;180.0&lt;/SPAN&gt;, &lt;SPAN style="color: #0000ff;"&gt;85.05112877980659&lt;/SPAN&gt;, SpatialReferences.&lt;SPAN style="font-style: italic;"&gt;getWgs84&lt;/SPAN&gt;());
&amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envWeb = (Envelope) GeometryEngine.&lt;SPAN style="font-style: italic;"&gt;project&lt;/SPAN&gt;(envWGS, SpatialReferences.&lt;SPAN style="font-style: italic;"&gt;getWebMercator&lt;/SPAN&gt;());

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;Point origin = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Point(envWeb.getXMin(), envWeb.getYMax(), envWeb.getSpatialReference());

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;List&amp;lt;LevelOfDetail&amp;gt; levelOfDetail = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;ArrayList&amp;lt;&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;for&lt;/SPAN&gt;(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;int &lt;/SPAN&gt;i = &lt;SPAN style="color: #0000ff;"&gt;0&lt;/SPAN&gt;; i &amp;lt; &lt;SPAN style="color: #0000ff;"&gt;100&lt;/SPAN&gt;; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; levelOfDetail.add(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;LevelOfDetail(i, &lt;SPAN style="color: #0000ff;"&gt;156543.032 &lt;/SPAN&gt;/ Math.&lt;SPAN style="font-style: italic;"&gt;pow&lt;/SPAN&gt;(&lt;SPAN style="color: #0000ff;"&gt;2&lt;/SPAN&gt;, i), &lt;SPAN style="color: #0000ff;"&gt;554678932 &lt;/SPAN&gt;/ Math.&lt;SPAN style="font-style: italic;"&gt;pow&lt;/SPAN&gt;(&lt;SPAN style="color: #0000ff;"&gt;2&lt;/SPAN&gt;, i)));

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;TileInfo tileInfo = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;TileInfo(&lt;SPAN style="color: #0000ff;"&gt;96&lt;/SPAN&gt;, TileInfo.ImageFormat.&lt;SPAN style="color: #660e7a; font-style: italic; font-weight: bold;"&gt;JPG&lt;/SPAN&gt;, levelOfDetail, origin, envWeb.getSpatialReference(), &lt;SPAN style="color: #0000ff;"&gt;256&lt;/SPAN&gt;, &lt;SPAN style="color: #0000ff;"&gt;256&lt;/SPAN&gt;);

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;return new &lt;/SPAN&gt;ImageTiledLayer(tileInfo, envWeb)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808000;"&gt;@Override
&lt;/SPAN&gt;&lt;SPAN style="color: #808000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;protected byte&lt;/SPAN&gt;[] getTile(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;TileKey tileKey)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final int &lt;/SPAN&gt;nRows = (&lt;SPAN style="color: #0000ff;"&gt;1 &lt;/SPAN&gt;&amp;lt;&amp;lt; tileKey.getLevel());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final int &lt;/SPAN&gt;tmsRow = nRows - &lt;SPAN style="color: #0000ff;"&gt;1 &lt;/SPAN&gt;- tileKey.getRow();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final &lt;/SPAN&gt;Cursor imageCur = &lt;SPAN style="color: #660e7a;"&gt;database&lt;/SPAN&gt;.rawQuery(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #008000; font-weight: bold;"&gt;"SELECT tile_data FROM tiles WHERE zoom_level = " &lt;/SPAN&gt;+ Integer.&lt;SPAN style="font-style: italic;"&gt;toString&lt;/SPAN&gt;(tileKey.getLevel()) +
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #008000; font-weight: bold;"&gt;" AND tile_column = " &lt;/SPAN&gt;+ Integer.&lt;SPAN style="font-style: italic;"&gt;toString&lt;/SPAN&gt;(tileKey.getColumn()) +
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #008000; font-weight: bold;"&gt;" AND tile_row = " &lt;/SPAN&gt;+ Integer.&lt;SPAN style="font-style: italic;"&gt;toString&lt;/SPAN&gt;(tmsRow), &lt;SPAN style="color: #000080; font-weight: bold;"&gt;null&lt;/SPAN&gt;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;if&lt;/SPAN&gt;(imageCur.moveToFirst())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;final byte&lt;/SPAN&gt;[] blob = imageCur.getBlob(&lt;SPAN style="color: #0000ff;"&gt;0&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageCur.close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;return &lt;/SPAN&gt;blob;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageCur.close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;return null&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; };
&amp;nbsp; }&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 21:58:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51433#M391</guid>
      <dc:creator>ThomasDumont-Goyette</dc:creator>
      <dc:date>2021-12-10T21:58:48Z</dc:date>
    </item>
    <item>
      <title>Re: Have a map with dted and mbTile</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51434#M392</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The spatial reference of the map is determined by the first layer added to the map. In your example it is the mbTile layer whose spatial reference is&amp;nbsp;web mercator that defines the spatial reference of the map. A raster layer can be auto-reprojected when added to the map. So the dted raster is also displayed on the map. When you switch line 79 and 80, the dted raster layer becomes the first layer added to the map and determines the spatial reference of the map. And the mbTile layer becomes the second layers of the map. However, an ImageTiledLayer can't be reprojected. Its tiling scheme is precooked. When its spatial reference differs from the map's spatial reference it can't be displayed. You can check what spatial reference of the dted raster layer is. But looks like it is not web mercator.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Aug 2019 00:15:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51434#M392</guid>
      <dc:creator>XuemingWu</dc:creator>
      <dc:date>2019-08-21T00:15:28Z</dc:date>
    </item>
    <item>
      <title>Re: Have a map with dted and mbTile</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51435#M393</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot for the explanation. I checked the spatial reference of the raster layer and it is null. Is there a way to set the spatial reference?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Aug 2019 12:12:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51435#M393</guid>
      <dc:creator>ThomasDumont-Goyette</dc:creator>
      <dc:date>2019-08-21T12:12:38Z</dc:date>
    </item>
    <item>
      <title>Re: Have a map with dted and mbTile</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51436#M394</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found the solution. Instead of doing ArcGISMap map = new ArcGISMap(new Basemap()); we need to do:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;ArcGISMap map = &lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;ArcGISMap(SpatialReferences.&lt;SPAN style="font-style: italic;"&gt;getWebMercator&lt;/SPAN&gt;());
map.setBasemap(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;new &lt;/SPAN&gt;Basemap());&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 21:58:51 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51436#M394</guid>
      <dc:creator>ThomasDumont-Goyette</dc:creator>
      <dc:date>2021-12-10T21:58:51Z</dc:date>
    </item>
    <item>
      <title>Re: Have a map with dted and mbTile</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51437#M395</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nice &lt;IMG class="jive_emoji" src="https://community.esri.com/images/emojis/1f44d.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Aug 2019 21:45:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/have-a-map-with-dted-and-mbtile/m-p/51437#M395</guid>
      <dc:creator>XuemingWu</dc:creator>
      <dc:date>2019-08-21T21:45:39Z</dc:date>
    </item>
  </channel>
</rss>

