Hi,
I had a tool before that let us do the popup configuration in an editor and then reload into the web map. This was really easy because the WebMap was just a simple dictionary and I just had to replace the ['operationalLayers'] for a file. This cannot be done in the newest API.
What I am trying to do instead is remove the layers and then re-add them. The issue is when trying to add the layer using WebMap.add_layer it does not allow it. I have copied the exact layer object from a Map and then tried to add and it does not allow, so I know it is not an issue with the json.
How do I create a layer that can be added using WebMap.add_layer from the definition json?
Here is a code sample that shows the issue adding layers. I use the identical definition to remove and works fine, try to add the same layer and it fails
web_map <SPAN class="operator token">=</SPAN> arcgis<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>WebMap<SPAN class="punctuation token">(</SPAN>web_map_item<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># create a copy of the layers</SPAN>
layers <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
layers<SPAN class="punctuation token">.</SPAN>extend<SPAN class="punctuation token">(</SPAN>web_map<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># remove layers</SPAN>
<SPAN class="keyword token">for</SPAN> layer <SPAN class="keyword token">in</SPAN> layers<SPAN class="punctuation token">:</SPAN>
web_map<SPAN class="punctuation token">.</SPAN>remove_layer<SPAN class="punctuation token">(</SPAN>layer<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#try to add layers back - see error below</SPAN>
<SPAN class="keyword token">for</SPAN> layer <SPAN class="keyword token">in</SPAN> layers<SPAN class="punctuation token">:</SPAN>
web_map<SPAN class="punctuation token">.</SPAN>add_layer<SPAN class="punctuation token">(</SPAN>layer<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN>
TypeError Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token"><</SPAN>ipython<SPAN class="operator token">-</SPAN>input<SPAN class="number token">-55</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">3865d40b28c6</SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">in</SPAN> <SPAN class="operator token"><</SPAN>module<SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">8</SPAN>
<SPAN class="number token">9</SPAN> <SPAN class="keyword token">for</SPAN> layer <SPAN class="keyword token">in</SPAN> layers<SPAN class="punctuation token">:</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN> <SPAN class="number token">10</SPAN> web_map<SPAN class="punctuation token">.</SPAN>add_layer<SPAN class="punctuation token">(</SPAN>layer<SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">11</SPAN>
C<SPAN class="punctuation token">:</SPAN>\Program Files <SPAN class="punctuation token">(</SPAN>x86<SPAN class="punctuation token">)</SPAN>\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site<SPAN class="operator token">-</SPAN>packages\arcgis\mapping\_types<SPAN class="punctuation token">.</SPAN>py <SPAN class="keyword token">in</SPAN> add_layer<SPAN class="punctuation token">(</SPAN>self<SPAN class="punctuation token">,</SPAN> layer<SPAN class="punctuation token">,</SPAN> options<SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">339</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="number token">340</SPAN> <SPAN class="keyword token">raise</SPAN> TypeError<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Input layer should either be a Layer object or an Item object. To know the supported layer types, refer"</SPAN> <SPAN class="operator token">+</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN> <SPAN class="number token">341</SPAN> <SPAN class="string token"><SPAN>'to </SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fdevelopers.arcgis.com%2Fweb-map-specification%2Fobjects%2FoperationalLayers%2F" target="_blank">https://developers.arcgis.com/web-map-specification/objects/operationalLayers/</A><SPAN>'</SPAN></SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">342</SPAN> <SPAN class="comment token"># endregion</SPAN>
<SPAN class="number token">343</SPAN>
TypeError<SPAN class="punctuation token">:</SPAN> Input layer should either be a Layer object <SPAN class="operator token">or</SPAN> an Item object<SPAN class="punctuation token">.</SPAN> To know the supported layer types<SPAN class="punctuation token">,</SPAN> referto https<SPAN class="punctuation token">:</SPAN><SPAN class="operator token">//</SPAN>developers<SPAN class="punctuation token">.</SPAN>arcgis<SPAN class="punctuation token">.</SPAN>com<SPAN class="operator token">/</SPAN>web<SPAN class="operator token">-</SPAN>map<SPAN class="operator token">-</SPAN>specification<SPAN class="operator token">/</SPAN>objects<SPAN class="operator token">/</SPAN>operationalLayers<SPAN class="operator token">/</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Thanks
-Joe