ThinkGeo.com    |     Documentation    |     Premium Support

SaveState/LoadState on SimpleMarkerOverlay

Hello,


 I have a SimpleMakerOverlay with various Markers that I added to the Makers collection. I set the DragMode property of the SimpleMarkerOverlay to DragMode.Drag. I drag some of the Markers on the map and then I want to save the state of the SimpleMarkerOverlay by calling the SaveState function but I get null in my byte array.


byte[] bytes = simpleMarkerOverlay.SaveState();


How should how use this function exactely? My goal is also to use the LoadState function. Thank you.



Hi Adolfo,
 
I guess this is because the assembly you are using is not up to date. We’d suggest you to download the latest dll package from helpdesk.thinkgeo.com and try again.
 
We made a demo to test the Save/Load of the latest version of SimpleMarkerOverlay, and it worked out fine. The C# and xaml code of the demo is attached with this post.
 
In the demo, you can click the “Save” button to save states for SimpleMarkerOverlay, then drag the markers to wherever you want and then click the “Load” button to bring them back to where they were at the first place.
 
Please refer to the attached file for more detail and feel free to let us know if you have any other questions.
 
Regards,
Tsui

post8262.zip (1.12 KB)

Hi Tsui, 
  
  I have a LayerOverlay with three InMemoryFeatureLayers, each one containing it’s own InternalFeatures and everything. The InMemoryFeatureLayers are added to the LayerOverlay with a “Key” as: MyLayerOverlay.Layers.Add(“MyInMemoryFeatureLayerName”, MyInMemoryFeatureLayer), so I can refer it in the code with ctype(MyLayerOverlay.Layers(“MyInMemoryFeatureLayerName”),InMemoryFeatureLayer).InternalFeatures … 
  
   MyLayerOverlay.SaveState and LoadState works nice, restoring everything, but the Layer key; I can still access the InMemoryFeatureLayer InternalFeatures by using the index as: ctype(MyLayerOverlay.Layers(1),InMemoryFeatureLayer).InternalFeatures , but not by key. (The “name” property is correctly restored as well, it seems to be only the key in the collection) 
  
 Carlos

Hi Carlos, 
  
 Thanks for your reporting. 
 We just found that we missed the keys in GeoCollection when we tried to save the state of the Layers. 
 We’ve fixed this issue, please try the next build and let us know if there were any further issues. 
  
 Regards, 
 Tsui

Hi Tsui 
  
  I updated the assemblies to 4.5.0.106 and WrapDatelineMode has disappeared!!! HELP!!! 
  
 Carlos.

Ok, my fault. It is a “Product build”, not the “development build”. 
  
  There is no new build for that. When do you spect to create the today’s one?

Carlos, 
  
 Recently, we were upgrading our build system so that we didn’t build development package, and we didn’t have any changes of source code since 4.5.102.0, so that you can treat 4.5.102.0 is the same as 4.5.106.0 
  
 Thanks, 
 James

Hi James, 
  
  Don’t you have any change of source since 4.5.102.0? What about the bug Tsui fixed on friday (read above)? I’m waiting for this bugfix eagerly. 
  
 Carlos.

Carlos, 



You will get the daily build again tomorrow, sorry for inconvenience. 



Thanks, 

James



Hi James, 
  
  I got it, and it’s working perfectly. With this bugfix my app’s startup load time for 130.000 positionreports is reduced from 4 mins to less than 4 secs. Imagine how happy am I today!!! 
  
  By the way, WpfDesktopEdition.dll has grown from 309Kb to 490Kb. For not having any source changes it seems strange. Didn’t you include any other feature? 
  
  Regards, 
  
 Carlos. 


Carlos, 



It's great it has so huge performance improvements for you! 



We switched to a new obfuscation strategy which added some extra size to the assembly, there is no new features included. 



Thanks, 



James 

 



Guys, I am sneaking in here.  Should I be getting this update so I can also enjoy the performance improvements even if I am not using SaveState/LoadState?

Hi Klaus, 



The performance improvement is due to the fact that Saving / Loading state allows me to skip the TrackOverlay initialization, that consist of reading all and every tracking element from the database with it's corresponding position reports (that may be up to 1000 each, and 130.000 points total), building the line shapes, and adding them to the InternalFeatures... This is a big job that use to take long. 

With SaveState, all the overlay internal structures are serialized and stored to a file, then recovered at startup. No other performance improvement is in the new assembly for standard drawing...




 



Carlos, Thanks for the sharing.



You are welcome.

Issue resolved.

Definitely yes.

Carlos, 
  
 :). We need to have the last comment in a thread to close a post. So you don’t need to reply this one, thanks for your enthusiasm in the forum any way.

I know, I was kidding as I found funny the way you close all the forums saying the last word. It reminds me a girldfriend I had time ago ;) 
  
    I’m sorry, and promise not write again.

place holder :)