ThinkGeo.com    |     Documentation    |     Premium Support

Drawing problem

I'm having a problem with the drawing of my layers. It happends on different shape files and when you pan the map it goes away.


I've attached a screenshot of the problem.



I'm using version 6.0.0.47 of the web edition.


Any idea what might be going wrong?


 


Thanks!



Hello Elm 
  
 Thanks for your post, I didn’t see this problem before, you are using ShapeFileFeatureLayer? Could you please provide a sample with your data to me to recreate this problem? 
  
 Regards, 
  
 Gary

 Hey Gary,


 


I'm indeed using a ShapeFileFeatureLayer. I have it on different ShapeFileFeatureLayers.


Can I mail you the ShapeFile? I rather not post it in public.


 


Thanks.



 The weird thing is when I pan the map around I sometimes get this (3 out of 5 times). I've checked this in the Developer tools in Chrome and open the same image again in a new tab and it looks correct. So it gets drawn correctly sometimes but not always.


 




Hello Elm, 
  
 You can email to forumsupport@thinkgeo.com, I will try your sample to recreate this problem. 
  
 Regards, 
  
 Gary

 Hi Gary,


 


I've mailed the shape file yesterday.


 


Regards,


 


Elm



 Hello Elm,


 
Thanks for your data, I did some test on it, looks like everything is ok, could you please provide your sample to me?


 
Regards,
 
Gary

 Hey Gary,


 


I've mailed you yesterday with a link to download my sample application.


 


Thanks,


 


Elm



Hello Elm, 
  
 I got the sample, thanks, but in the code, it needs two shape file, one is ‘media.shp’ and one is ‘media_detail.shp’, I only got second one from your previous email, could you please check this? 
  
 Regards, 
  
 Gary

Hey Gary, 
  
 all the shape files should be included in the project in the shapes directory? 
  
  
 Regards, 
  
 Elm

Hey Gary,


do you have any news on this issue?


 


Thanks!


 


 



 Hi Gary,


 


it has been a while since I heard about this issue. Is it still being investigated?


 


 


Thanks!



Should I post a ticket on this? 


 Hello Elm,


 
 I'm sorry for delay, I did fully test with your sample and data, I am keep pan the map about 15 minutes, but can't recreate your problem, here I made a video should you how I did the test, if I misunderstanding something, please feel free to let me know.
 screencast.com/t/eVqqTWfrOuH
 
 Regards,
 
 Gary

 



 Hi Gary,


 


I've send some mails where the problem is more visible.


 


Thanks!!


 


 



Hello Elm, 
  
 Thanks for your further information, yes I can see the problem in the online sample you send, but still I can’t recreate in my side, I tried using 6.0.0.47 today but the same result. 
  
 But I noticed two things in the online sample,  one is I got an exception said projection has problem, but only one time get this exception, can you check the projection? 
  
 And another thing is the shape file rendered very slow in the online sample, I think it’s not very big, isn’t it? 
  
 Regards, 
  
 Gary

Hi Gary, 
  
 I think I’m getting closer to the problem. I’ve changed the example to only use 2 layers. Both ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20 
 I’ve also added the Overlayswitcher. 
  
 The media layer is about 4mb (139polygons) and the TA layer is about 5mb (20 000 polygons). 
  
 When you switch on the overlays separately there is no problem. But when you turn both overlays on and pan the map a bit the problem occurs. 
 When you see the spikes on the map and turn one overlay off and pan the map again the problem goes away. 
  
 I’ve checked my layers many times with the IsValid() feature from 6.0.122 version but it makes no difference. The shapes seem to be correct. 
  
 Does this help you any further? 
  
 Thanks, 
  
 Elm 


Gary,


 


is there anything I can do to speed this up? I would like to resolve this as soon as possible.


 


Thanks,


 


Elm


 



Hello Elm, 
  
 Sorry for delay, we are still working on this, we have find that in DictionaryValueStyle drawcore, the feature become invalid after draw, but we are still dig in it. 
  
 And if you are hurry for some problem, you can submit a ticket about this, ticket has higher priority and will handle first. 
  
 Regards, 
  
 Gary

Hi Elm,


After days searching, we finally find out the problem, the Projection is not thread safe, and it will go wrong in multithread mode sometimes, and here are two ways to solve your problem, 


1), Override the class ManagedProj4Projection and add a locker, but this will not get the advantage of multithread.



    public class MyProjection : ManagedProj4Projection
    {
        static object lockObject = new object();

        protected override Vertex[] ConvertToInternalProjectionCore(double[] x, double[] y)
        {
            lock (lockObject)
            {
                return base.ConvertToInternalProjectionCore(x, y);
            }
        }

        protected override Vertex[] ConvertToExternalProjectionCore(double[] x, double[] y)
        {
            lock (lockObject)
            {
                return base.ConvertToExternalProjectionCore(x, y);
            }
        }
    }

        public MyProjection GetLambert72ToGoogleProjection()
        {
            MyProjection _proj4Lambert72 = new MyProjection();
            _proj4Lambert72.InternalProjectionParametersString = MyProjection.GetEpsgParametersString(31370);
            _proj4Lambert72.ExternalProjectionParametersString = MyProjection.GetGoogleMapParametersString();
            return _proj4Lambert72;
        }

2), Set different instance of projection for each layers to avoid the multithread issue. e.g.



layer1.FeatureSource.Projection = GetLambert72ToGoogleProjection();
layer2.FeatureSource.Projection = GetLambert72ToGoogleProjection();

Hope it helps,


Edgar