ThinkGeo.com    |     Documentation    |     Premium Support

Google Maps Polygon

Hello,

I am using the Web Suite and  GoogleOverLay to load in Google Maps.  I have the MapUnit set to meter - all is working well. 



My question is how to achieve drawing a simple "clickable" polygon on top of the map using decimal degree. For example LatLng(62.000000, -18.000000), LatLng(48.000000, 18.000000).  Please provide a code sample.



Thanks.




Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));;
                Map1.CurrentExtent = new RectangleShape(-18595090.514592, 12419998.078083, 18427337.004236, -9065533.3255494);
                Map1.MapUnit = GeographyUnit.Meter;
 
                Map1.MapTools.OverlaySwitcher.Enabled = false;
                Map1.MapTools.MouseCoordinate.Enabled = true;
                Map1.MapTools.PanZoomBar.Enabled = true;
                Map1.MapTools.MiniMap.Enabled = true;
 
                GoogleOverlay google = new GoogleOverlay("Google Map");
                google.JavaScriptLibraryUri = new Uri(ConfigurationManager.AppSettings["GoogleUriV3"]);
                google.GoogleMapType = GoogleMapType.Physical;
                 
                Map1.CustomOverlays.Add(google);








Hi Ronnie,



Welcome to Map
Suite Discussion Forums.


 We need a projection conversion when trying to render an
EPSG 4326 based data over an Google overlay, because the projection of Google
overlay is EPSG 900913. In Map Suite, ManagedProj4Projection is the way to
convert projection. Below codes shows you how to work with
ManagedProje4Projection.


ManagedProj4Projection
proj4 = new ManagedProj4Projection();


//Also
we can get projection parameters string by EPSG ID.


//proj4.ExternalProjectionParametersString
= ManagedProj4Projection.GetEpsgParametersString(4326);


proj4.InternalProjectionParametersString
= ManagedProj4Projection.GetDecimalDegreesParametersString();


proj4.ExternalProjectionParametersString
= ManagedProj4Projection.GetGoogleMapParametersString();


proj4.Open();


The internal projection is your data’s projection, in your
case is Longitude&Latitude (EPSG 4326). The external is the projection what
you want after projected, here you want to render it over Google projection
map, so the external should be Google Projection.



 We built two sample project to show you use ManagedProjection in two ways:


a)      Directly convert the feature to external projection
before add feature to layer. 


Feature projectedFeature =
proj4.ConvertToExternalProjection(unprojectedFeature);


b)      Set Projection property for layer’s FeatureSource. Thus
we can add unprojected features to layer and don’t need conversion, when
drawing these features, Map Suite will return converted features use the
Pro4Projection you set to FeatureSource.


googleProjectionLayer.FeatureSource.Projection
= proj4;


               


For more details, please try the attached samples.

Any question please feel free to let us know.

Thanks,



001_WebDisplayAsimpleMap.zip (261 KB)