<?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: Using AGSWebTiledLayer to show custom tiles in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524973#M4485</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hmm. This is odd. I am unable to reproduce this in my testing using openweatherdata.org tiles…&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which version of Runtime are you using?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In case&amp;nbsp;anyone's interested, here's the code I used to try to test:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;import UIKit
import ArcGIS

&lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; apiKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"GET ONE FROM OPENWEATHERDATA.ORG - FREE ACCOUNT REQUIRED"&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layerNames &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"clouds_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"temp_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"precipitation_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;class&lt;/SPAN&gt; &lt;SPAN class="token class-name"&gt;ViewController&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; UIViewController &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;

    @IBOutlet weak &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; mapView&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSMapView&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;
    
    &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; tiledLayers&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;AGSWebTiledLayer&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; nil

    &lt;SPAN class="keyword token"&gt;override&lt;/SPAN&gt; func &lt;SPAN class="token function"&gt;viewDidLoad&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        super&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;viewDidLoad&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// Do any additional setup after loading the view.&lt;/SPAN&gt;
        
        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; map &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;AGSMap&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;basemap&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSBasemap&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;streetsVector&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;map &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; map

        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layerNames&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;map&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; layerName &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; AGSWebTiledLayer &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; urlTemplate &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"https://tile.openweathermap.org/map/\(layerName)/{level}/{col}/{row}.png?appid=\(apiKey)"&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;AGSWebTiledLayer&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;urlTemplate&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; urlTemplate&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            layer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;opacity &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1.0&lt;/SPAN&gt;
            layer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;false&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;//            if let rc = AGSRequestConfiguration.global().copy() as? AGSRequestConfiguration {&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//                rc.debugLogResponses = true&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//                layer.requestConfiguration = rc&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//            }&lt;/SPAN&gt;

            &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; layer
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

        map&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;operationalLayers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;addObjects&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; layers&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

        tiledLayers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layers
        tiledLayers&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;first&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;
        
        mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;touchDelegate &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; self
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

extension ViewController&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSGeoViewTouchDelegate &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    func &lt;SPAN class="token function"&gt;geoView&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;_ geoView&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSGeoView&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; didTapAtScreenPoint screenPoint&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; CGPoint&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; mapPoint&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSPoint&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        guard &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;map&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;operationalLayers &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;AGSLayer&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;fatalError&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Layers are not layers!"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        
        guard &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; firstLayer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;first &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        
        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; newVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;firstLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible
        
        layers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;forEach &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            $&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; newVisible
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 22:53:20 GMT</pubDate>
    <dc:creator>Nicholas-Furness</dc:creator>
    <dc:date>2021-12-11T22:53:20Z</dc:date>
    <item>
      <title>Using AGSWebTiledLayer to show custom tiles</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524971#M4483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm currently working on creating and adding `AGSWebTiledLayer` tiles to my map. I have a service that returns valid tiles using the following format as described in the documentation:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;A href="http://{subDomain}.host.com/{level}/{col}/{row}.png"&gt;http://{subDomain}.host.com/{level}/{col}/{row}.png&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem that I'm coming across is when I add the `AGSWebTiledLayer` to the `operationLayers` of the map, nothing happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also implemented the `urlForTileKeyHandler` handler and returned the url following the format above, but when debugging, that&amp;nbsp;handler is never called.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there something else that needs to happen to get the tiles to display? From what I can tell, the layer is being added to the map, but it's never actually fetching the data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Nov 2019 18:52:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524971#M4483</guid>
      <dc:creator>RobertKoch1</dc:creator>
      <dc:date>2019-11-20T18:52:43Z</dc:date>
    </item>
    <item>
      <title>Re: Using AGSWebTiledLayer to show custom tiles</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524972#M4484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I figured it out. It seems that web tile layers need to be explicitly told to load, a&amp;nbsp;step which I was neglecting to do.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Nov 2019 21:06:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524972#M4484</guid>
      <dc:creator>RobertKoch1</dc:creator>
      <dc:date>2019-11-20T21:06:25Z</dc:date>
    </item>
    <item>
      <title>Re: Using AGSWebTiledLayer to show custom tiles</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524973#M4485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hmm. This is odd. I am unable to reproduce this in my testing using openweatherdata.org tiles…&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which version of Runtime are you using?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In case&amp;nbsp;anyone's interested, here's the code I used to try to test:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;import UIKit
import ArcGIS

&lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; apiKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"GET ONE FROM OPENWEATHERDATA.ORG - FREE ACCOUNT REQUIRED"&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layerNames &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"clouds_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"temp_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"precipitation_new"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;class&lt;/SPAN&gt; &lt;SPAN class="token class-name"&gt;ViewController&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; UIViewController &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;

    @IBOutlet weak &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; mapView&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSMapView&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;
    
    &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; tiledLayers&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;AGSWebTiledLayer&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; nil

    &lt;SPAN class="keyword token"&gt;override&lt;/SPAN&gt; func &lt;SPAN class="token function"&gt;viewDidLoad&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        super&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;viewDidLoad&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// Do any additional setup after loading the view.&lt;/SPAN&gt;
        
        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; map &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;AGSMap&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;basemap&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSBasemap&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;streetsVector&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;map &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; map

        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layerNames&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;map&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; layerName &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; AGSWebTiledLayer &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; urlTemplate &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"https://tile.openweathermap.org/map/\(layerName)/{level}/{col}/{row}.png?appid=\(apiKey)"&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;AGSWebTiledLayer&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;urlTemplate&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; urlTemplate&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            layer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;opacity &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1.0&lt;/SPAN&gt;
            layer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;false&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;//            if let rc = AGSRequestConfiguration.global().copy() as? AGSRequestConfiguration {&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//                rc.debugLogResponses = true&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//                layer.requestConfiguration = rc&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//            }&lt;/SPAN&gt;

            &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; layer
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

        map&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;operationalLayers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;addObjects&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; layers&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

        tiledLayers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layers
        tiledLayers&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;first&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;
        
        mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;touchDelegate &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; self
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

extension ViewController&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSGeoViewTouchDelegate &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    func &lt;SPAN class="token function"&gt;geoView&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;_ geoView&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSGeoView&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; didTapAtScreenPoint screenPoint&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; CGPoint&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; mapPoint&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; AGSPoint&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        guard &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; layers &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; mapView&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;map&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;operationalLayers &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;AGSLayer&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;fatalError&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Layers are not layers!"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        
        guard &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; firstLayer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; layers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;first &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        
        &lt;SPAN class="keyword token"&gt;let&lt;/SPAN&gt; newVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;firstLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible
        
        layers&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;forEach &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            $&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;isVisible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; newVisible
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:53:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524973#M4485</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2021-12-11T22:53:20Z</dc:date>
    </item>
    <item>
      <title>Re: Using AGSWebTiledLayer to show custom tiles</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524974#M4486</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/5992"&gt;Robert Koch&lt;/A&gt;, do you still need to load your layer before it'll work? I wasn't able to reproduce this behavior but am keen to understand&amp;nbsp;if there's some case that triggers it which we haven't considered and need to fix.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jan 2020 15:07:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524974#M4486</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2020-01-02T15:07:44Z</dc:date>
    </item>
    <item>
      <title>Re: Using AGSWebTiledLayer to show custom tiles</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524975#M4487</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/2201"&gt;Nicholas Furness&lt;/A&gt;, I haven't had a chance to look through this with the holidays and all. I actually haven't revisited it since loading the layers is working. If I get time to go back and revisit it, I'll check out your code above and let you know.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jan 2020 15:17:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/using-agswebtiledlayer-to-show-custom-tiles/m-p/524975#M4487</guid>
      <dc:creator>RobertKoch1</dc:creator>
      <dc:date>2020-01-02T15:17:49Z</dc:date>
    </item>
  </channel>
</rss>

