ThinkGeo.com    |     Documentation    |     Premium Support

Markers

Hello,


I notice two issues and perhaps you could help me:


1- I create a MarkerOverlay server-side, and add some markers, I set a Map.CurrentExtent smaller than the MarkerOverlay extent. Then on client-side, when I unzoom, some of the markers which were out of the Map.CurrentExtent have disappeared. Why? I tried with version 4.0 and 4.5 and I have the same issue. I could create my markers client-side, but I'd prefer to do it server-side. How?


2- With the version 4.5, when I add a GdiPlusRasterImage, there is a level zoom, and a currentextent of the map where the layer disappears (the 16th level for me, and when the image is centered on the map). If the zoom is higher or lower, the image is visible. Why?


Thank you for your help!


André-François


 



Andre-francois, 
  
 Here are the answers: 
 1. I’m not sure which MarkerOverlay you are using, if it’s InMemoryMarkerOverlay or FeatureSouceMarkerOverlay, the map will just load the markers inside current view extent instead of full extent, in other words, the markers out of current extent won’t be loaded. When the extent changed, such as Zoom out, pan, the map will request these unloaded markers on the fly. I’m not very clear about the words “when I unzoom, some of the markers which were out of the Map.CurrentExtent have disappeared”, can you let us know it disappear temporary or forever?  
 2. Technically, ZoomLevel is just used for FeatureLayer instead of RasterLaye whose visibility is controlled by the “upper” and “lower” scale. The ZoomLevel is a kind of manager of scales, different zoomLevel represents different scale ranges.  
  
 I’m not sure whether the above gives the explanation clearly, and any questions please let us know. 
  
 Thanks, 
 Johnny 


Johnny,


thank you for your answers. Could I have some precisions please?


1- First, I use InMemoryMarkerOverlay. You say "When the extent changed, such as Zoom out, pan, the map will request these unloaded markers on the fly". But it's not the case for me. The unloaded markers don't appear when the current extent changes. I don't understand why. Is it the same behaviour with SimpleMarkerOverlay?


2- I don't understand the difference between "upper and "lower" scale and ZoomLevel. Could you explain it?  That I know is if you add a GdiPlusRasterLayer with a .tiff inside in a map control and center on it,  and if you test the different zoom level you will see that the image desappears sometimes in the version 4.5. In the version 4.0, it works normally.


 


Thank you again,


André-François



I will answer the question 2 and let Johnny answer question1.


All layers inheriting from RasterLayer (EcwRasterLayer, GdiPlusRasterLayer, GeoTiffRasterLayer, MrSidRasterLayer and WmsRasterLayer), basically all image layers, you use the properties LowerThreshold and UpperThreshold to control between what scales the layer is going to be displayed. For example, if you use the GeoTiff World.tif that comes with the "How Do I" samples and you want to display that layer between the scales 1: 73,000,000 and 1: 4,000,000, then you would use the following code: (The code is for Desktop but the same principles apply for Web)



       private void Post8553()
        {
            winformsMap1.MapUnit = GeographyUnit.DecimalDegree;

            GeoTiffRasterLayer geoTiff = new GeoTiffRasterLayer(@"../../data/world.tif");
            geoTiff.LowerThreshold = 4000000;
            geoTiff.UpperThreshold = 73000000;

            LayerOverlay layerOverlay = new LayerOverlay();
            layerOverlay.Layers.Add(geoTiff);

            winformsMap1.Overlays.Add(layerOverlay);

            geoTiff.Open();
            winformsMap1.CurrentExtent = geoTiff.GetBoundingBox();
            geoTiff.Close();

            winformsMap1.Refresh();

        }

        private void winformsMap1_CurrentScaleChanged(object sender, CurrentScaleChangedWinformsMapEventArgs e)
        {
            double scale = Math.Round(winformsMap1.CurrentScale,0);
            lblScale.Text = "1: " +  scale;
        }
 

 


 For all Layers inheriting from FeatureLayers such as ShapefileFeatureLayers etc, for the same purpose, we have more control because a feature layer can be displayed in different ways using different styles. To help the developer, we offer the API ZoomLevels that is a collection of 20 preset zoom levels their own upper and lower scales of each zoom levels. You can also use your own custom zoom levels if you wish. Actually, we have various Code Community samples on that subject such as Map Scales and Zoom Level Partitioningwiki.thinkgeo.com/wiki/Map_Suite_We...ng_Samples



Andre-François, 
  
 The InMemoryMarkerOverlay and FeatureSourceMarkerOverlay is different from SimpleMarkerOverlay, which loads all the markers for the first time, that’s why we always recommend you using the first two classes. Can you give us a demo which can run directly? I think it’s hard for us to determine what caused the problem. Maybe it’s related to the code or some special configuration. 
  
 Thanks, 
 Johnny 
  


Hello,


thank you for yours answers.


But I always have the problem:. sometimes the picture of the gdiplusrasterlayer desappears and there is a message: "the given key was not in the dictionnary".


What does it mean?


André-François



 


André François,
Have you tried the installation sample “Samples\CSharp Samples\Samples\SatelliteImage\ LoadAStandardImageWithWorldFile.aspx”, does it work normally on your machine? This is a normal exception that we are unable to get any valued information, can you post the code here and some information about the image that you are loading?
Thanks,
Johnny

Johnny,


about the markers, I send you a sample: I create 10 markers server-side in ten countries, and I zoom on the western Europe when I load the page. 8 markers are in the current extent, and 2 are out (a marker in Austria and a marker in Greece). If you pan or zoom to these countries, the map doesn't load the missing markers on the fly. If you click "PostBack", they appear, but then if you return to west, others markers have desappeared and the map doesn't load them anymore. Could you test my sample please?


Thank you very much.


The dll I use:  version 4.0.0.0



WebSite3.zip (3.95 KB)

 


Hi, Andre
I’ve tested your sample and find out the problem lies in the way you use your customized style class. Once the MarkValueItem is set with the customized style in your sample, the problem occurs. We’ll investigate why this kind of problem occurs.
Any updates we’ll let you know.
Thank you very much.
James

Hi James,


thank you for your answer!


I've tried what you said and you're right : if I don't use my custom style, the map loads the markers correctly. So I searched and I found this:  if the Popup.AutoPan is "true", it doesn't work. If Popup.AutoPan is false, it works! What does property AutoSpan do really? 


Thank you again!


André



 


Hi André,
I’ve tried your sample with the latest package of MapSuite WebEdition, the customized style works fine with the latest package (version 4.5.80.0), no matter if the AuotPan property is set to “true” or “false”. You might want to have a try, and before running the example referencing the latest assemblies of MapSuite WebEdition, you’d better clean up data cached in Internet Explorer, so that all the JavaScripts can be updated. 
Further questions please let me know.
Thanks.
James