<?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: continuously increase memory when add large amount of graphic layer in ArcGIS Map in iOS Swift. in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/continuously-increase-memory-when-add-large-amount/m-p/225198#M2075</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;300,000 markers seems like quite a lot and at a certain point you might find that device memory simply isn't enough.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some possible optimizations:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;If you have a lot of attribution on each AGSGraphic, you could reduce that.&lt;/LI&gt;&lt;LI&gt;Consider using a &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_renderer.html"&gt;&lt;STRONG&gt;Renderer&lt;/STRONG&gt;&lt;/A&gt; and &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_graphics_overlay.html#a80a74453a2516ee40275547d38d71229"&gt;setting that on AGSGraphicsOverlay&lt;/A&gt;. If all your markers are a single symbol, use the &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_simple_renderer.html"&gt;&lt;STRONG&gt;AGSSimpleRenderer&lt;/STRONG&gt;&lt;/A&gt; and create one symbol that runtime re-uses. If your markers have different symbols derived from&amp;nbsp;attribution,&amp;nbsp;you could use an &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_unique_value_renderer.html"&gt;&lt;STRONG&gt;AGSUniqueValueRenderer&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;or &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_class_breaks_renderer.html"&gt;&lt;STRONG&gt;AGSClassBreaksRenderer&lt;/STRONG&gt;&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you have that much data, it is usually unnecessary to have it all loaded at once (it's either partially off the visible map area, or else if it's all being displayed it's unreadable or better represented in some processed way):&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Do you need to have 300,000 markers at a time? That's a very "busy" map and you won't be able to see them all at once. Perhaps consider clustering the data, or aggregating it into something more suitable for display (e.g. polygons). You could look at&amp;nbsp;&lt;A href="https://github.com/nixta/clusterlayer-plugin-ios"&gt;clusterlayer-plugin-ios&lt;/A&gt;&amp;nbsp;(in particular the &lt;A href="https://github.com/nixta/clusterlayer-plugin-ios/tree/runtime-100"&gt;runtime-100 branch&lt;/A&gt;, which is still under development but pretty close to finished).&lt;/LI&gt;&lt;LI&gt;Have you considered keeping this data in a Feature Service (or a local&amp;nbsp;Geodatabase)? Runtime would then only retrieve and bring into memory the markers that it needs for display.&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Dec 2019 16:26:58 GMT</pubDate>
    <dc:creator>Nicholas-Furness</dc:creator>
    <dc:date>2019-12-02T16:26:58Z</dc:date>
    <item>
      <title>continuously increase memory when add large amount of graphic layer in ArcGIS Map in iOS Swift.</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/continuously-increase-memory-when-add-large-amount/m-p/225197#M2074</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We have added 2K to 300K location marker in ArcGIS Map application memory goes high and terminate due to memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in ArcGIS Map, we get data about 2K to&amp;nbsp;&lt;SPAN&gt;300K&lt;/SPAN&gt; and set and remove data on a particular zoom level. In this process we get N element and using for loop create N&amp;nbsp; element&amp;nbsp; AGSSymbol then it add on&amp;nbsp;AGSGraphic Array.&lt;/P&gt;&lt;P&gt;After the large process [AGSGraphic] into the&amp;nbsp;AGSGraphicsOverlay. then it adds on ArcGIS Map.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this process is repeated when certain zoom in or zoom out and Memory increase continuously.&lt;/P&gt;&lt;P&gt;so how can solve this issue of memory usage ??&amp;nbsp;&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/2201"&gt;Nicholas Furness&lt;/A&gt;‌ &lt;A href="https://community.esri.com/migrated-users/3289"&gt;Divesh Goyal&lt;/A&gt;‌&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Dec 2019 12:13:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/continuously-increase-memory-when-add-large-amount/m-p/225197#M2074</guid>
      <dc:creator>KishanSuthar</dc:creator>
      <dc:date>2019-12-02T12:13:03Z</dc:date>
    </item>
    <item>
      <title>Re: continuously increase memory when add large amount of graphic layer in ArcGIS Map in iOS Swift.</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/continuously-increase-memory-when-add-large-amount/m-p/225198#M2075</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;300,000 markers seems like quite a lot and at a certain point you might find that device memory simply isn't enough.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some possible optimizations:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;If you have a lot of attribution on each AGSGraphic, you could reduce that.&lt;/LI&gt;&lt;LI&gt;Consider using a &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_renderer.html"&gt;&lt;STRONG&gt;Renderer&lt;/STRONG&gt;&lt;/A&gt; and &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_graphics_overlay.html#a80a74453a2516ee40275547d38d71229"&gt;setting that on AGSGraphicsOverlay&lt;/A&gt;. If all your markers are a single symbol, use the &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_simple_renderer.html"&gt;&lt;STRONG&gt;AGSSimpleRenderer&lt;/STRONG&gt;&lt;/A&gt; and create one symbol that runtime re-uses. If your markers have different symbols derived from&amp;nbsp;attribution,&amp;nbsp;you could use an &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_unique_value_renderer.html"&gt;&lt;STRONG&gt;AGSUniqueValueRenderer&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;or &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_class_breaks_renderer.html"&gt;&lt;STRONG&gt;AGSClassBreaksRenderer&lt;/STRONG&gt;&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you have that much data, it is usually unnecessary to have it all loaded at once (it's either partially off the visible map area, or else if it's all being displayed it's unreadable or better represented in some processed way):&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Do you need to have 300,000 markers at a time? That's a very "busy" map and you won't be able to see them all at once. Perhaps consider clustering the data, or aggregating it into something more suitable for display (e.g. polygons). You could look at&amp;nbsp;&lt;A href="https://github.com/nixta/clusterlayer-plugin-ios"&gt;clusterlayer-plugin-ios&lt;/A&gt;&amp;nbsp;(in particular the &lt;A href="https://github.com/nixta/clusterlayer-plugin-ios/tree/runtime-100"&gt;runtime-100 branch&lt;/A&gt;, which is still under development but pretty close to finished).&lt;/LI&gt;&lt;LI&gt;Have you considered keeping this data in a Feature Service (or a local&amp;nbsp;Geodatabase)? Runtime would then only retrieve and bring into memory the markers that it needs for display.&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Dec 2019 16:26:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/continuously-increase-memory-when-add-large-amount/m-p/225198#M2075</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2019-12-02T16:26:58Z</dc:date>
    </item>
  </channel>
</rss>

