Hello,
Drop it on the map with GraphicsOverlay,
If you delete it with Clear,
I am in trouble that the memory will not be released.
Do you have any problems?
<SPAN class="comment token">// Copyright 2016 ESRI </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// All rights reserved under the copyright laws of the United States </SPAN>
<SPAN class="comment token">// and applicable international laws, treaties, and conventions. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// You may freely redistribute and use this sample code, with or </SPAN>
<SPAN class="comment token">// without modification, provided you include the original copyright </SPAN>
<SPAN class="comment token">// notice and use restrictions. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// See the Sample code usage restrictions document for further information. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token"><sys/resource.h></SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"ArcGISTiledLayer.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"Basemap.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"Map.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"PolygonBuilder.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"PolylineBuilder.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"SimpleFillSymbol.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"SimpleLineSymbol.h"</SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"ArcGIS.h"</SPAN> </SPAN>
ArcGIS<SPAN class="operator token">::</SPAN><SPAN class="token function">ArcGIS</SPAN><SPAN class="punctuation token">(</SPAN>QWidget <SPAN class="operator token">*</SPAN>parent <SPAN class="comment token">/*=nullptr*/</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">:</SPAN>
<SPAN class="token function">QMainWindow</SPAN><SPAN class="punctuation token">(</SPAN>parent<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
SpatialReference <SPAN class="token function">sr</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">30165</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
MapGraphicsView <SPAN class="operator token">*</SPAN>m_mapView <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">MapGraphicsView</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
ArcGISTiledLayer <SPAN class="operator token">*</SPAN>tiledLayer <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">ArcGISTiledLayer</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token function">TileCache</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"/users/test/gis001/tpk/16000-4000.tpk"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
tiledLayer<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setVisible</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">true</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
tiledLayer<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setOpacity</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">0.8</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Map <SPAN class="operator token">*</SPAN>m_map <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">Map</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token function">Basemap</SPAN><SPAN class="punctuation token">(</SPAN>tiledLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
m_map<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setInitialViewpoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Viewpoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Point</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">110867.18539903179</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">106473.50196292577</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10000.0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
m_mapView<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setMap</SPAN><SPAN class="punctuation token">(</SPAN>m_map<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
GraphicsOverlay <SPAN class="operator token">*</SPAN>graphicsOverlay <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">GraphicsOverlay</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setRenderingMode</SPAN><SPAN class="punctuation token">(</SPAN>GraphicsRenderingMode<SPAN class="operator token">::</SPAN>Static<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
m_mapView<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphicsOverlays</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">append</SPAN><SPAN class="punctuation token">(</SPAN>graphicsOverlay<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="token function">setCentralWidget</SPAN><SPAN class="punctuation token">(</SPAN>m_mapView<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// グラフィック生成前メモリ使用量を表示</SPAN>
<SPAN class="comment token">// Display memory usage before graphic generation </SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 10000回グラフィックを生成(三角形+塗り潰し) </SPAN>
<SPAN class="keyword token">for</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">int</SPAN> i <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">;</SPAN> i <SPAN class="operator token"><</SPAN> <SPAN class="number token">10000</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="operator token">++</SPAN>i<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
PolygonBuilder <SPAN class="token function">polyBUilder</SPAN><SPAN class="punctuation token">(</SPAN>sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
polyBUilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">addPoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Point</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">110867.18539903179</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">106473.50196292577</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
polyBUilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">addPoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Point</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">110865.2853990318</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">106474.8019629257</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
polyBUilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">addPoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Point</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">110865.48539903181</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">106475.6019629257</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
polyBUilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">addPoint</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token function">Point</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">110868.8853990318</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">106488.10196292578</SPAN> <SPAN class="operator token">+</SPAN> i <SPAN class="operator token">*</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
SimpleFillSymbol <SPAN class="operator token">*</SPAN>nestingSymbol <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">SimpleFillSymbol</SPAN><SPAN class="punctuation token">(</SPAN>SimpleFillSymbolStyle<SPAN class="operator token">::</SPAN>Solid<SPAN class="punctuation token">,</SPAN> <SPAN class="token function">QColor</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"#FF008000"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Graphic <SPAN class="operator token">*</SPAN>g <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token function">Graphic</SPAN><SPAN class="punctuation token">(</SPAN>polyBUilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">toGeometry</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> nestingSymbol<SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">this</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">append</SPAN><SPAN class="punctuation token">(</SPAN>g<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="comment token">// グラフィック生成後メモリ使用量を表示</SPAN>
<SPAN class="comment token">// Display memory usage before graphic generation </SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="property macro token">#if 0 </SPAN>
<SPAN class="comment token">// 削除パターン1 GraphicListModelをclearする </SPAN>
graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">clear</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// グラフィック削除後メモリ使用量を表示 </SPAN>
<SPAN class="comment token">// Display memory usage after graphic deletion</SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 結果 -> メモリ使用量変わらず </SPAN>
<SPAN class="comment token">// result -> memory usage remains unchanged </SPAN>
<SPAN class="property macro token">#elif 0 </SPAN>
<SPAN class="comment token">// 削除パターン2 GraphicListModelから1個ずつremoveする </SPAN>
GraphicListModel <SPAN class="operator token">*</SPAN>model <SPAN class="operator token">=</SPAN> graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">while</SPAN> <SPAN class="punctuation token">(</SPAN>model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">size</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
Graphic <SPAN class="operator token">*</SPAN>g <SPAN class="operator token">=</SPAN> model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">first</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">removeOne</SPAN><SPAN class="punctuation token">(</SPAN>g<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="comment token">// グラフィック削除後メモリ使用量を表示 </SPAN>
<SPAN class="comment token">// Display memory usage after graphic deletion</SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 結果 -> メモリ使用量変わらず </SPAN>
<SPAN class="comment token">// result -> memory usage remains unchanged </SPAN>
<SPAN class="property macro token">#elif 0 </SPAN>
<SPAN class="comment token">// 削除パターン3 GraphicListModelから1個ずつremoveし、さらにGraphicを自前でdeleteする </SPAN>
GraphicListModel <SPAN class="operator token">*</SPAN>model <SPAN class="operator token">=</SPAN> graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">while</SPAN> <SPAN class="punctuation token">(</SPAN>model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">size</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
Graphic <SPAN class="operator token">*</SPAN>g <SPAN class="operator token">=</SPAN> model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">first</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">removeOne</SPAN><SPAN class="punctuation token">(</SPAN>g<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> g<SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="comment token">// グラフィック削除後メモリ使用量を表示 </SPAN>
<SPAN class="comment token">// Display memory usage after graphic deletion</SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 結果 -> メモリ使用量変わらず </SPAN>
<SPAN class="comment token">// result -> memory usage remains unchanged </SPAN>
<SPAN class="property macro token">#elif 0 </SPAN>
<SPAN class="comment token">// 削除パターン4 GraphicListModelから1個ずつremoveし、さらにGraphicとその中のSymbolを自前でdeleteする </SPAN>
GraphicListModel <SPAN class="operator token">*</SPAN>model <SPAN class="operator token">=</SPAN> graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">while</SPAN> <SPAN class="punctuation token">(</SPAN>model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">size</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
Graphic <SPAN class="operator token">*</SPAN>g <SPAN class="operator token">=</SPAN> model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">first</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Symbol <SPAN class="operator token">*</SPAN>sls <SPAN class="operator token">=</SPAN> g<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">symbol</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">removeOne</SPAN><SPAN class="punctuation token">(</SPAN>g<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
g<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setSymbol</SPAN><SPAN class="punctuation token">(</SPAN>NULL<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> sls<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> g<SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="comment token">// グラフィック削除後メモリ使用量を表示 </SPAN>
<SPAN class="comment token">// Display memory usage after graphic deletion </SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 結果 -> メモリ使用量変わらず </SPAN>
<SPAN class="comment token">// result -> memory usage remains unchanged </SPAN>
<SPAN class="property macro token">#elif 1 </SPAN>
<SPAN class="comment token">// 削除パターン5 GraphicListModelから1個ずつremoveし、さらにGraphicとその中のSymbolを自前でdeleteし、 </SPAN>
<SPAN class="comment token">// 加えてGraphicsOverlayまでも削除する </SPAN>
GraphicListModel <SPAN class="operator token">*</SPAN>model <SPAN class="operator token">=</SPAN> graphicsOverlay<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphics</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">while</SPAN> <SPAN class="punctuation token">(</SPAN>model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">size</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
Graphic <SPAN class="operator token">*</SPAN>g <SPAN class="operator token">=</SPAN> model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">first</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Symbol <SPAN class="operator token">*</SPAN>sls <SPAN class="operator token">=</SPAN> g<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">symbol</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
model<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">removeOne</SPAN><SPAN class="punctuation token">(</SPAN>g<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
g<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">setSymbol</SPAN><SPAN class="punctuation token">(</SPAN>NULL<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> sls<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> g<SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
m_mapView<SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">graphicsOverlays</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN><SPAN class="token function">removeOne</SPAN><SPAN class="punctuation token">(</SPAN>graphicsOverlay<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">delete</SPAN> graphicsOverlay<SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// グラフィック削除後メモリ使用量を表示</SPAN>
<SPAN class="comment token">// Display memory usage after graphic deletion </SPAN>
<SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">// 結果 -> メモリ使用量変わらず </SPAN>
<SPAN class="comment token">// result -> memory usage remains unchanged </SPAN>
<SPAN class="property macro token">#endif </SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">void</SPAN> ArcGIS<SPAN class="operator token">::</SPAN><SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">struct</SPAN> rusage psinfo<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="token function">getrusage</SPAN><SPAN class="punctuation token">(</SPAN>RUSAGE_SELF<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">&</SPAN>psinfo<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">==</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="token function">fprintf</SPAN><SPAN class="punctuation token">(</SPAN>stderr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"memory usage : %ld kb\n"</SPAN><SPAN class="punctuation token">,</SPAN> psinfo<SPAN class="punctuation token">.</SPAN>ru_maxrss<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation 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></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><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></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><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></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN><SPAN class="comment token">// Copyright 2016 ESRI </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// All rights reserved under the copyright laws of the United States </SPAN>
<SPAN class="comment token">// and applicable international laws, treaties, and conventions. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// You may freely redistribute and use this sample code, with or </SPAN>
<SPAN class="comment token">// without modification, provided you include the original copyright </SPAN>
<SPAN class="comment token">// notice and use restrictions. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="comment token">// See the Sample code usage restrictions document for further information. </SPAN>
<SPAN class="comment token">// </SPAN>
<SPAN class="property macro token">#ifndef ARCGIS_H </SPAN>
<SPAN class="property macro token">#define ARCGIS_H </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token"><QMainWindow></SPAN> </SPAN>
<SPAN class="property macro token">#include <SPAN class="string token">"MapGraphicsView.h"</SPAN> </SPAN>
<SPAN class="keyword token">using</SPAN> <SPAN class="keyword token">namespace</SPAN> Esri<SPAN class="operator token">::</SPAN>ArcGISRuntime<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">class</SPAN> <SPAN class="token class-name">ArcGIS</SPAN> <SPAN class="operator token">:</SPAN> <SPAN class="keyword token">public</SPAN> QMainWindow
<SPAN class="punctuation token">{</SPAN>
Q_OBJECT
<SPAN class="keyword token">public</SPAN><SPAN class="operator token">:</SPAN>
<SPAN class="token function">ArcGIS</SPAN><SPAN class="punctuation token">(</SPAN>QWidget <SPAN class="operator token">*</SPAN>parent <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">nullptr</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">private</SPAN><SPAN class="operator token">:</SPAN>
<SPAN class="keyword token">void</SPAN> <SPAN class="token function">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="property macro token">#endif </SPAN><SPAN class="comment token">// ARCGIS_H </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>