ThinkGeo.com    |     Documentation    |     Premium Support

Shapefile does not follow Virtual Earth when panning and zooming

I am creating an application that uses Virtual Earth with a powerline shapefile on top. What I am finding is that after panning or zooming the map that sometimes the shapefile will not line up with the Virtual Earth Map. Another issue is that durning a ZoomIn or ZoomOut the shapefile will disappear.


Here is a screenshot showing the shapefile lining up properly:


Here is an example of the misalignement after panning:


Here is the code I am using to create this map: 



protected void Page_Load(object sender, EventArgs e)
        {
            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#B3C6D4"));
            
            Map1.MapUnit = GeographyUnit.Meter;
            Map1.MapTools.OverlaySwitcher.Enabled = true;
            Map1.MapTools.MouseCoordinate.Enabled = true;

            VirtualEarthOverlay ve = new VirtualEarthOverlay("VirtualEarth Map");
            Uri VirtualEarthURI = new Uri("dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2");
            ve.JavaScriptLibraryUri = VirtualEarthURI;
            ve.VirtualEarthMapType = VirtualEarthMapType.Road;

            ShapeFileFeatureLayer Powerline = new ShapeFileFeatureLayer(@"C:\Projects\Powerline.shp");
            Powerline.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.StandardColors.Blue, 5, true);
            Powerline.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            Powerline.FeatureSource.Projection = proj4;

            LayerOverlay shapeOverlay = new LayerOverlay("Shape Overlay", false, TileType.SingleTile);
            shapeOverlay.Layers.Add(Powerline);
            shapeOverlay.TransitionEffect = TransitionEffect.None;

            Map1.CustomOverlays.Add(ve);
            Map1.CustomOverlays.Add(shapeOverlay);

            Powerline.Open();
            Map1.CurrentExtent = Powerline.GetBoundingBox();
            Powerline.Close();
                        

        }
 

 



Hi Steve,



This issue comes from the animation of Virtual Earth panning effect; we can disable the animation by the following javascript 



script.




function OnMapCreated(map) {
var ve = map.getLayer("VirtualEarth Map");
ve.mapObject.vemapcontrol.SetAnimationEnabled(false); 
}

 





For the shapefile disappears during zoom in/out, could you please clear the IE cache, and try again, if the problem still exists, 



it’s a known issue of the projection, and we’ll try our best to fix it.



Any questions, please let us know,



Thanks

Howard.



When could we expect a fix for this issue?









v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}




Hi Steve,


 


The animation of VE will be disabled by default in the upcoming version, but I’m not sure when we can fix this issue as it’s not very easy.


 


It comes from the projection issue, as far as I know, one projection doesn’t work for the whole world wide but only for a specific extent, because the result will be inaccuracy when outside that specific extent.


 


For example, we have a polygon within a rectangle in EPSG: 4326; after project it to EPSG: 2163, the polygon may not be in the old rectangle anymore. From the diagrams below you can easily tell that the polygon is outside the drawing extent after projected, that’s why some features are missing after projected.


 


<span
style='font-size:10.0pt;font-family:Arial'> SHAPE<span
style='mso-spacerun:yes'>  \* MERGEFORMAT 



























    
        
        
        

Drawing 


        

Extent


        
        
    









    
        
        
        

Drawing 


        

Extent


        
        
    



























    
        
        
        

Projected Drawing Extent


        
        
    


























<span
style='font-size:10.0pt;font-family:Arial'>




We know it’s a critical issue, and it’s already on our schedule.


 


Please let me know if you have more questions.


 


Thanks, 


 


Howard.




Regarding setting the projection of a feature source, can I also do this for an InMemoryFeatureLayer?

Gregory


Yes, you can. And the API is just like the other type of feature layer, the code could be like this:


Proj4Projection proj1 = new Proj4Projection();
proj1.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
proj1.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
InMemoryFeatureLayer locationLayer = new InMemoryFeatureLayer();
locationLayer.FeatureSource.Projection = proj1;


Any more questions please let us know.
Thanks,
Sun

I am using the MapShapeLayer from the MapShape sample project, and would like to apply the 4326 projection to this MapShapeLayer on top of the Meters projection I am using for Virtual Earth. However, I’ll ask my question in the desktop edition forum…

OK, I remember that the MapShapeLayer is a project in the code community, hope the Desktop guys can help you. 
  
 Any more questions please let me know. 
  
 Thanks, 
  
 Sun