ThinkGeo.com    |     Documentation    |     Premium Support

Get a layer and its properties created on server side

Hello,


Here is my problem:


Server side: I have created an InMemoryFeatureLayer and drawn a polygon in it. I put my layer in a layerOverlay and add it in the map.


Client Side: I get my layer : var layer = map.getLayersByName("name")[0], but I can't get the features in it, like this: layer.features. And if I could add and remove features, always in the client side, it would be perfect. I've tried layer.addFeatures(features), but it only works with a layer created in the client-side and not created in the server side.


Could you help me?


Thank you!


 



Hi, andre francois


We don't provide this feature directly in our WebEdition API. But here are two solutions for your problem. If you need it frequently and I suggest that you can serialize the features on the server-side and deserialize them on the client-side, and that means you need to be in charge of the communication between server and client. Another solution is to dump your features into Map.EditOverlay and don't set TrackMode and you can get the vector features on the clinet-side like the codes below:




        var OnMapCreated = function (map) {
            var layer = map.getLayersByName("EditOverlay")[0];
        }


If you have any doubts about it, please let us know.


Thanks,


Khalil



Hello,


thank you for your answer, but I can't use the EditOverlay, and I'm not sure I can serialize all the informations I need: I have an overlay with 50 polygons, created server-side, and I want to select one of them client-side.


I have another question: If I create my layer with 50 polygons client-side, how can I do to keep the state of the map after a postback? Because after the postback, the layer is deleted.


Could you help me?


Thank you


André-François



Hi, andre francois


Thanks for your information about this post.
I suggest that you choose the “EditOverlay”, because it’s the better way to communicate betwee server-side and client-side. In fact, it represents a Vector Layer of OpenLayers on the client-side, and we have our own logic to synchronize it. The features you have added to it and you can get it from the client like the way I have stated in the last reply.
 
For your second question, I think the problem is how to synchronize. If you insist on that, here is one alternate solution for you. You can use   “Sys.Serialization.JavaScriptSerializer” ASP.NET Ajax client object to serialize the features collection and the related information like column values and store it in the hidden filed in order to keep the state of map.
 
If you don’t try to edit the features or do other modifying operation, and I suggest that you just need to dump these features into InMemeoryFeatureLayer and that’s ok.
 
If you can outline your web app scenario, and maybe we can provide better suggestions for your solution.
 
Thanks,
 
Khalil