ThinkGeo.com    |     Documentation    |     Premium Support

Adding x and y labeled axis on map

 Guys, do you have an x-y axis labeled layer somewhere?  Guess I can look at my custom graticule layer and do something similar/


Thanks.


 



Hi Klaus, 
  
 Would you please show us some samples or screen shot that represents this x-y axis labeled layer? We didn’t really get what you mean. 
  
 Regards, 
 Tsui

Tsui, see left and button of screen.   Thanks.


 See



Hi Klaus, 
  
 We checked X-Y Axis map on Google, but there is no official standard for this. We don’t have this feature integrated. I think you can try to write you own X-Y Axis adornment layer; this code community might help.  
 wiki.thinkgeo.com/wiki/Map_Suite_Services_Edition_All_Samples#Compass 
  
 The graticule layer has a lot of logic in the DrawCore method, it’s easier to write a new one than override it. 
  
 Thanks and feel free to let us know if you have any questions. 
  
 Thanks, 
 Howard

Thanks for link Howard.  I will look into it, although I suspect my custom GraticuleAdornmentLayer which will probably be easier to morph into an XY axis Adornment layer.  Only difference between my graticule and x-y layer is I do not want lines going across map.  Will see how this goes.

 In case someone else needs this, attached is source for grid lines and axis layer combined into one:  Sample usage is:


 




        private void Button_Click(object sender, RoutedEventArgs e)
        {
            wpfMap1.AdornmentOverlay.Layers.Add(new GridLinesAdornmentLayer());
            wpfMap1.Refresh();
        }

        private void axis_Click(object sender, RoutedEventArgs e)
        {
            wpfMap1.AdornmentOverlay.Layers.Add(GridLinesAdornmentLayer.GetXYAxisLayer());
            wpfMap1.Refresh();
        }

 


 


 



002_001_GridLinesAdornmentLayer.cs (14.3 KB)

 Howard, 


 
A quick question.  How do I get a RectangeShape that is based on current visible extent from GeoCanvas?   I need this so that axis labels always render on screen.    Right now, labels are falling off the screen when a user zooms into the map.  To see what I am talking about, please run attached sample with this proof of concept axis/grid layer.
 
If you have a better way to do this, please let me know.
 
Thanks again.
 

XYAxis.zip (13.4 KB)

Klaus,



Thank you so much for sharing your code, it works pretty good. The effect is hard coded on the overlay and the animation during zooming cannot get the real virwport extent as it is in the realtime. So here I introduce another way to satisfy your requirement.



The attached file contains a CustomWpfMap class; it expose a ViewportExtentChanged event which raises whenever the extent is changed. Please code the attached files to your project and set the start app URI to Window2 to see my prototype of the Axis.


PS, with this event, we can implement a new kind of marker that keeps fixed size during zooming as well. 



Thanks and let me know if you have any questions,



Howard



001_XYAxis.zip (2.18 KB)

Good stuff Howard, thanks.  Now, I just need to figure out how to add labels.  


 


 



Hi Klaus, 
  
 You know in my demo, I added some Line shapes; but PathGeometry will be better for the performance. Just let you know and feel free to let us know if you have any more questions. 
  
 Thanks, 
 Howard