ThinkGeo.com    |     Documentation    |     Premium Support

Get Featurelayer/Features through a Service

 Hi,


I want to write a Silverlight application, 


The client part will get some parameter from user and then call the WebService asynchronously, pass the parameter.

then the WebService will connect to SQL-Server query the database and returning back list of features.


the client will get the features and display them on the map.


do you have any sample, that I can get some idea about how we should do that?


 


Regards

 


 


 



Hi Ben,
 
The following link demonstrates how to get data from wcf service in asynchronous way, please check it for more information.
wiki.thinkgeo.com/wiki/Map_S…r_With_WCF
 
Regards,
 
Ivan

Many thanks Ivan

Ben, 
  
 Any more questions please let us know again, 
  
 Thanks, 
  
 Scott,

Hi , 

Cause the number of features are too many, converting them to Json+Send to Client+ convert back them to thinkGeo feature take too much time. 

So, I was thinking of converting the result features of a query to image and then send them back.  



What's your idea about this approach (there are some issues like zoomlevel, Style, Image Coordination and ...)? 

Is there a way to convert features to image?






Regards, 

Ben



Hi Ben, 
  
 From your description I guess you need to draw these features on an image (Service side) and return this image back to client part, then load the image on the map. If my understanding is correct, I’m afraid this approach will bring too much complexity to your application. Currently I haven’t think out a better solution but I think if you can get these features piece by piece then combine them on client part, it will be helpful to improve the performance. 
  
 Regards, 
  
 Ivan

Many thanks for your answer, 
  
 any suggestion for second question: 
 Is there a way to convert features to image? 
  
 Regards, 
 Ben

Hi Ben, 
  
 Currently I’m not sure what’s the exact meaning about “convert features to image”, is it just as my understanding in my previous post, or you just need to serialize the feature collection, I will keep an eye on your feedback. 
  
 Regards, 
  
 Ivan

Hi Ivan, 
  
 Yes It it is, Any idea about how to draw features in an image on server and then send it to client? 
  
 Regards 
 Ben

Hi Ben,


Thank you for your feedback. 


For your reference, here I provide some code snippet which demonstrates how to draw image on overlay.


private void Draw(LayerOverlay overlay, Map map)
{
    GeoCanvas drawingCanvas = null;
    WriteableBitmap nativeImage = null;
    var overlayElement = overlay.OverlayElement;

    drawingCanvas = new WriteableBitmapGeoCanvas();
    nativeImage = new WriteableBitmap((int)overlayElement.Width, (int)overlayElement.Height);

    if (drawingCanvas != null && nativeImage != null)
    {
        ((Canvas)overlayElement).Children.Clear();
        drawingCanvas.BeginDrawing(nativeImage, map.CurrentExtent, map.MapUnit);
        LayerOverlay ovl = new LayerOverlay();
        InMemoryFeatureLayer layer = new InMemoryFeatureLayer();
        layer.InternalFeatures.Add(new Feature(30, 30));
        layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.Capital1;
        layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
        ovl.Layers.Add(layer);
        Map1.Overlays.Add(overlay);
        foreach (Layer lyr in ovl.Layers)
        {
            lyr.Open();
            lyr.Draw(drawingCanvas, new Collection<SimpleCandidate>());
            lyr.Close();
        }
        drawingCanvas.EndDrawing();
    }

    Image image = new Image();
    image.Source = (WriteableBitmap)nativeImage;
    ((Canvas)overlayElement).Children.Add(image);
}


There should be lots of considerations to fully meet your requirement and I think it's out of POST's range, if you need further help, please contact with our professional services.


Regards,


Ivan