Select to view content in your preferred language

Clone Items and setting new Item Extent

08-10-2021 10:33 AM
New Contributor II

Hi all, 

I am trying to clone a Web App but have it centered over a  new area (new city for example) and i was wondering if I could use the item_extent parameter from clone_items to achieve this. Anyone have any ideas?



3 Replies
New Contributor

I would also like to get some more information on this. I can't find anything online. I've tried the following, but when I open the cloned WebMap, the extent remains unchanged:

ext ={'spatialReference': {'latestWkid': 3857, 'wkid': 102100},
      'xmin': -1252724.3668020056,
      'ymin': 4250996.361644156,
      'xmax': -84766.57460482302,
      'ymax': 4740193.342669154}

cloned_item = mygis.content.clone_items(items=[temp_item],


I have tried to this before with copy_item() as well, since I'm not moving content between portals and organizations. I just need to duplicate a webmap and then reset the extent. But not a single approach has worked for me:

#Copy the item, move and share the copy
new_item = temp_item.copy_item(title="WMasdf_{}".format(event_name), folder = event_name)
new_item.move(event_name) #because the folder parameter in the previous method doesn't seem to work either

#Different formats of extents
ex1 = {'xmin': -427248.44528862747, 
      'ymin': 4919558.2636672305, 
      'xmax': -399769.33362014365, 
      'ymax': 4936393.519147017, 
      'spatialReference': {'latestWkid':3857,
                           'wkid': 102100}}
ex2 = '-427248.44528862747, 4919558.2636672305, -399769.33362014365, 4936393.519147017'
ex3 = '110, 47, 111, 46'
ex4 = [[110,47],[111,46]]

#Differente ways I've been trying to set the extent, some on their own, then also some combined. Nothing worked
new_item.extent = ex4

new_item.get_data()['initialState']['viewpoint']['targetGeometry'] = ex



new_map = WebMap(copy_item)
new_map.definition['initialState'] = ex

If someone could offer some insight on this, that would be amazing!


0 Kudos
New Contributor II

Hello, I just wrestled with this too.  I am copying from a template webmap that has a Field Maps customization, so I wish to have those edit layers- but I then need to change the extent of the webmap to fit different areas of interest.

This works for me:

# Get the template webmap item ID
Template_WebMap_Item = gis.content.get('cf6eec40dbd644d99b4645547e2614d5')

# Create a WebMap object from an existing web map item
Template_map_obj = WebMap(Template_WebMap_Item)

# Update the properties for new map
wm_properties = {'title' : 'New Web Map {0}'.format(EventAliasName),
                 'snippet': "Web map for earthquake response data acquisition",
                 'tags' : 'Observations',
                 'type': 'Web Map'

# Add a layer unique to this event

# Save the webmap to the new Event Folder
TheEventMap = = wm_properties, folder=event_folder)

# Get the text data associated with the new webmap item
theEventMap_data = TheEventMap.get_data()

# Examine the 'initialState' key
# {'viewpoint': {'targetGeometry': {'spatialReference': {'latestWkid': 3857, 'wkid': 102100}, 'xmin': -14142684.7214327, 'ymin': 4011415.2444049953, 'xmax': -12384021.574647833, 'ymax': 5128007.353594553}}}

# Generate a new initialState key using a specific feature layer extent.  Or do this manually
New_Istate =  {'viewpoint': {'targetGeometry': {'spatialReference': {'latestWkid':,

# Update the webmap item 
theEventMap_data['initialState'] = New_Istate
TheEventMap.update(item_properties={"text": json.dumps(theEventMap_data)})


The new saved webmap now has the desired extent upon loading it. 

Note the last line here.  Formatting correctly the 'item_properties' in the update method seems to be critical element here.  I learned this from this thread.




Occasional Contributor III

@JLBlair Thank you so much. I have spent half a day trying to figure this out and your solution works perfectly and should be the accepted answer to this question

0 Kudos