ThinkGeo.com    |     Documentation    |     Premium Support

Using osm map

 it is succeed,but I don’t need  GeographyUnit.Meter,I need use GeographyUnit.DecimalDegree. Can you help me.

private void WpfMap_Loaded(object sender, RoutedEventArgs e)
        {
            wpfMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);
            wpfMap1.MapUnit = GeographyUnit.Meter;



            OpenStreetMapOverlay osmOverlay = null;



            osmOverlay = new OpenStreetMapOverlay();



            osmOverlay.IsVisible = true;



            wpfMap1.Overlays.Add(“Open Street Map”, osmOverlay);



            wpfMap1.CurrentExtent = new RectangleShape(-14136706, 6440000, -5649000, 952000);
        }

-------------------------------------------------------------------------------------------------------------------------------------------------------------

private void WpfMap_Loaded(object sender, RoutedEventArgs e)
        {
            wpfMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);
            wpfMap1.MapUnit = GeographyUnit.DecimalDegree;



            OpenStreetMapOverlay osmOverlay = null;



            osmOverlay = new OpenStreetMapOverlay();



            osmOverlay.IsVisible = true;



            wpfMap1.Overlays.Add(“Open Street Map”, osmOverlay);



            wpfMap1.CurrentExtent = new RectangleShape(103.58,1.50,104.11,1.17);
        }
it don’t show osm map. Can you help me  to modify it?

Hi wang,



The OpenStreetMapOverlay supports projection, would you please try the below codes to do the projection conversion?



           Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            proj4.ExternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
            proj4.Open();



            OpenStreetMapOverlay osmOverlay = new OpenStreetMapOverlay();
            osmOverlay.ProjectionFromSphericalMercator = proj4;
Any other questions, don’t hesitate to let us know.

Thanks,

Troy

Hi Troy, 



Can you help me?

I have a problem, I already init a osm map,and add a button in the map ,order to realize that :
if cilck button  can draw  a rectangle( only draw one rectangle) to set currentextent in the map, Like “Shift” + draw a rectangle function.

how to reallize,I know:

 this.wpfMap1.TrackOverlay.TrackMode = TrackMode.Rectangle; // it can draw a rectangle,but it can draw a lot of rectangle.Don’t i need.



1. how to get the rectangle? 

2. how to set currentextent?  like “this.wpfMap1.CurrentExtent = rectangle.GetBoundingBox();”? this’s true?

Hi Burning,



Would you please try the below codes:


private void WpfMap_Loaded(object sender, RoutedEventArgs e)
 {
     wpfMap1.MapUnit = GeographyUnit.DecimalDegree;
     wpfMap1.CurrentExtent = new RectangleShape(-133.2515625, 89.2484375, 126.9046875, -88.290625);
 
     WorldMapKitWmsWpfOverlay worldMapKitOverlay = new WorldMapKitWmsWpfOverlay();
     wpfMap1.Overlays.Add(worldMapKitOverlay);
 
     wpfMap1.TrackOverlay.TrackEnded += TrackOverlay_TrackEnded;
 
     wpfMap1.Refresh();
 }
 
 void TrackOverlay_TrackEnded(object sender, TrackEndedTrackInteractiveOverlayEventArgs e)
 {
     wpfMap1.TrackOverlay.TrackMode = TrackMode.None;
     wpfMap1.CurrentExtent = wpfMap1.TrackOverlay.TrackShapeLayer.InternalFeatures[0].GetBoundingBox();
 }

Hope it helps and any questions, please let us know.

Thanks,

Troy