ThinkGeo.com    |     Documentation    |     Premium Support

Kml with png files

I have sent a .kmz file to support@thinkgeo.com that I would like to see if it can be used as a layer in Thinkgeo.  I extract it out to .kml then  I have tried to load it into my map with the following:


var goeClr = new GeoColor(clr.A, clr.R, clr.G, clr.B);
                sfLayer.StylingType = KmlStylingType.EmbeddedStyling;
                sfLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(goeClr, 2));
                sfLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(goeClr, 2), new GeoSolidBrush(GeoColor.StandardColors.Transparent));
                sfLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City3;
                sfLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Urban1(“NAME”);
                sfLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.OverlappingRule = LabelOverlappingRule.NoOverlapping;
                sfLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                if (MapkitMap.Overlays.Contains(GlobalHelpers.DYNAMIC_CABLES_OVERLAY))
                {
                    FileInfo fi = new FileInfo(sfLayer.KmlPathFilename);
 
                    LayerOverlay sqlLayers = (LayerOverlay)MapkitMap.Overlays[GlobalHelpers.DYNAMIC_CABLES_OVERLAY];
                    if (!sqlLayers.Layers.Contains(fi.Name))
                    {
                        ManagedProj4Projection proj4 = new ManagedProj4Projection();
                        proj4.InternalProjectionParametersString = Proj4Projection.GetWgs84ParametersString();
                        
                        proj4.ExternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(3857);
                        proj4.Open();
                        sqlLayers.Layers.Add(fi.Name, sfLayer);
                        sfLayer.Open();
                        sfLayer.FeatureSource.Projection = proj4;
                        sfLayer.Close();
                    }
                    sqlLayers.Refresh();
                }

The issues I am seeing is that the projection doesn’t seem to do anything for the file.  It never projects it into the meter projection that I can see.  Since it doesn’t project correctly (I have tried a few different parameter strings) I can’t tell in the images are being displayed or not.  Is there anything you can see that would make the kml file I sent not display correctly?

Hi Jake, 
  
 Thanks for your KML file, I unzip the KMZ and tried to load that, but it looks I cannot make this KML file render. 
  
 Are you using our KmlFeatureLayer for it? 
  
 As below is a simple sample but it cannot works well, please let me know whether I missed anything. 
  
    string kmlFile = @"C:\doc.kml";

            Map1.MapUnit = GeographyUnit.DecimalDegree;
            Map1.CurrentExtent = new RectangleShape(-131.22, 55.05, -54.03, 16.91);
                        
            KmlFeatureLayer layer = new KmlFeatureLayer(kmlFile);
            layer.RequireIndex = false;
            layer.StylingType = KmlStylingType.EmbeddedStyle;

            layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColor.SimpleColors.Black), new GeoSolidBrush(GeoColor.SimpleColors.Yellow));
            layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(GeoColor.SimpleColors.Blue, 5));
            layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.SimpleColors.Green), 10);

            LayerOverlay stateOverlay = new LayerOverlay();
            stateOverlay.Layers.Add("KmlLayer", layer);
            Map1.Overlays.Add("StateOverlay", stateOverlay);

            Map1.Refresh(); 
 
  
  
  
 Regards, 
  
 Don

Much of the problem I am having rendering it is I believe the map format I use.  I am using 3857 projection and no matter what I try with the proj4 internal/external values I am not seeing the images move away from close to 0,0.  Additionally if you load the kmz file into google earth you should see a series of .png files.  If you open the kml file for edit, you can see where it references those png files and also where they contain the bounding box coordinates. 



 I want to be able to display this kml file just like it displays in google earth.

Hi Jake, 
  
 Thanks for your further information. I failed to load the unzipped KML before, but from your reply, your requirement should be render the images in the KMZ just like the Google Earth.  
  
 I get more information from our developer, it looks we don’t support render the KMZ for now even the xml contains references, for KML we only support render the shapes which contained in it.  
  
 If you want to implement that, I think maybe you can tried to override the feature layer to render the images into tiles.  
  
 It’s not a easy requirement, so maybe you need to get a professional service about it. 
  
 Regards, 
  
 Don