ThinkGeo.com    |     Documentation    |     Premium Support

Color the Countries in World map based on my Data ( integer Value)

My Requirement is color the coutries in World map (Layer) based on my own values. For example i have my own values(numeric) for all the countries in the world. And based on this numeric value i need to display the countries with different colors. How can we achieve this in Think Geo. Kindly clarify this ASAP.


Many Thanks,


Balaji Regupathy.



Hello In, 
  
 Thanks for your post, for this requirements, we have value style can made this, this style allows you to match a value with data in the feature to determine how to draw that feature. You can refer HowDoISamples—>Styles—>Draw a feature based on a value and Draw features based on values to know how to use this style. 
  
 Regards, 
  
 Gary

Thanks Very much Gary for your support.  Now i want to achieve the same scenorio in Other overlays (Google, Bing, Yahoo). Is this possible? Also i want to know can we achieve all the features(color based on values, Add Markers etc)  that we can do in ThinkGeo layer in other overlays also. Kindly clarify on this.



Hello In, 
  
 Thanks for your further information, sorry to say, for  (Google, Bing, Yahoo), you can’t achieve color on them because this type of map are images not vertex map, we got map images from google, bing server, and there is no way we can modify it. 
  
 But there is a workaround, you load the goggle bing overlay and then load another shapefile overlay including the same shape file which you want to show in the google bing, then doing any operate on this shapefile overlay, as soon as you keep the projection between shape file and google bing map the same, the shape file map will cover the google bing, it will looks like the same scenorio. 
  
 Regards, 
  
 Gary

 Hi Gary,


Thanks for the valuable information. And my another question will be, Is the workaround looks like we color the country in the Google overlay? . Also can you kindly provide me the sample code for this. For example in our sample we have color the united states alone using "Color based on values" Feature, can you kindly provide me the code sample for this option in the google overlay using projection idea you have given in the above reply.


Again thanks in advance.



Hello In,


You are welcome, I just modify the sample code to let it working with google map, please refer the code below, and feel free to let me know your queries:




                Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));
                //using googlemap map unti and boundingbox.
                Map1.CurrentExtent = new RectangleShape(-13939426.6371, 6701997.4056, -7812401.86, 2626987.386962);
                Map1.MapUnit = GeographyUnit.Meter;

                GoogleOverlay googleOverlay = new GoogleOverlay();
                Map1.CustomOverlays.Add(googleOverlay);

                //use the projection to keep the shape file working with google map
                Proj4Projection proj4 = new Proj4Projection();
                proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
                proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();

                ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(MapPath("~/SampleData/world/cntry02.shp"));
                AreaStyle areaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green));
                worldLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(areaStyle);
                worldLayer.FeatureSource.Projection = proj4;

                // Draw a feature based on a value
                ValueStyle valueStyle = new ValueStyle();
                valueStyle.ColumnName = "CNTRY_NAME";
                valueStyle.ValueItems.Add(new ValueItem("United States", new AreaStyle(new GeoSolidBrush(GeoColor.StandardColors.LightGreen))));
                worldLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);
                worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

                LayerOverlay staticOverlay = new LayerOverlay();
                staticOverlay.Layers.Add("worldLayer", worldLayer);
                staticOverlay.IsBaseOverlay = false;
                Map1.CustomOverlays.Add(staticOverlay);

Regards,


Gary