Looking for solution to display active region in Map center

Within this forum we want to offer discussions all around our .NET based Map control including all .Net-language specific questions concerning calls of the xServer-API. Attention: xServer-relevant concepts can be found in further forums such as xRoute or xTour.

Looking for solution to display active region in Map center

Postby webdirekt » Fri Jul 28, 2017 6:58 am

- We have the list of Points (i.e. X and Y coordinates) and Geometry data with respect to list of zip codes.
- Based on result of Geometry data; we have added BaseLayer in the map using the tile renderer which is implemented from ITiledProvider interface (Ptv.XServer.Controls.Map.Layers.Tiled).
- We have set the map control envelope using the list of Points (i.e. X and Y coordinates).
Code: Select all
wpfMap.SetEnvelope(new MapRectangle(pointList), "OG_GEODECIMAL");
-- wpfMap: ptv wpf map control.
-- pointList: list of Points (i.e. X and Y coordinates).
-- "OG_GEODECIMAL": Point format


Issue:
Active region is displayed in the center of the map as expected but some part of the region is still out side the map.
Find "ActiveRegionActualResult.png" which shows the current display of Map
Find "ActiveRegionExcpectedResult.png" which we want to display the Map in our App

Solutions tried:
We tried to decrease the zoom level of map programmatically as mentioned below, but its not working.
Option 1:
Code: Select all
ptvMap.Zoom = ptvMap.Zoom - 1;

Option 2:
Code: Select all
ptvMap.ZoomLevel = ptvMap.ZoomLevel - 1;
Attachments
ActiveRegionExcpectedResult.png
ActiveRegionExcpectedResult.png
ActiveRegionActualResult.png
ActiveRegionActualResult.png
User avatar
webdirekt
 
Posts: 28
Joined: Wed Jul 15, 2015 10:18 am

Re: Looking for solution to display active region in Map cen

Postby Oliver Heilig » Fri Jul 28, 2017 10:37 am

Hi,

are you sure you're getting you points right? It works for me as excpected.

envelope.png

How i verified this:
[*] Downloaded the project https://github.com/ptv-logistics/SharpMap.Widgets
[*] Set SharpMap.Win as startup project
[*] at Form1::SelectedRegions_CollectionChanged change like below

Note: The SetEnvelope method set the map section to fit the envelope exactly longitudal or latitulal, depending on the ration of the window/envelope. You can use the MapRect.Inflate() method to increase the size to get a buffer.

Oli
Code: Select all
        private void SelectedRegions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            if(this.selectedRegions.Count == 0)
            {
                propertyGrid1.SelectedObject = null;
                return;
            }

            var selectedItem = selectedRegions[0];

            // test: set the map envelope to fit the selected item;
            // ... using Ptv.XServer.Controls.Map;
            // ... using GeoAPI.Geometries;

            // set the maprectangle from sharpmap geomatry
            var envelope = selectedItem.Geometry.EnvelopeInternal;
            var rect = new MapRectangle(
                new System.Windows.Point(envelope.Right(), envelope.Top()),
                new System.Windows.Point(envelope.Left(), envelope.Bottom()));
            // inflate by 20%
            rect.Inflate(1.2);

            this.formsMap1.SetEnvelope(rect);

            // ....

            // dump all attributes
Oliver Heilig
Chief Developer Logistic Services
PTV GROUP - Germany

https://github.com/oliverheilig/
User avatar
Oliver Heilig
 
Posts: 127
Joined: Tue May 13, 2014 12:10 pm
Location: Karlsruhe, Germany

Re: Looking for solution to display active region in Map cen

Postby webdirekt » Fri Jul 28, 2017 11:05 am

Thank you very much. It works perfectly for us and solved the issue. :)
User avatar
webdirekt
 
Posts: 28
Joined: Wed Jul 15, 2015 10:18 am


Return to PTV xServer.NET (Admin=OH)

cron