ThinkGeo.com    |     Documentation    |     Premium Support

Need to Rotae Map PanZoomBar control

Hi


I am using Mapsuite Silverlight edition 5.0.


I need to Rotae Map PanZoomBar control by 90 degree and put it downside with horizontal orientation.


Please check the attached snap shots.


I was able to rotate the control but pan operation is not working as expected. For example, after rotating the control if I click the 


"Top Pan" arrow map moves in left direction rather than moving up.


Can you please suggest how should I roatate it and all other functionality work as expected.


 


Thanks


Sunil



Sunil,


  I don't know what you are doing exactely with rotating in your app since we don't have it and you also did not include the snap shots. But as a general recomendation, I would suggest you check the sample Centering and Rotating WPF in the Code Community. It is a Wpf sample but the rotating technique applies for other editions too such as SilverLight.  wiki.thinkgeo.com/wiki/Map_Suite_Si...tating_WPF. If you are still struggling, I suggest you send us a little sample to us. Thank you.



Hi Val,


I am just trying to change the position of  Pan-Zoom control which is always in left side. 


I want to place this control in bottom side of map. Is this possible?


Thanks


Sunil



Sunil,


  I could figure out how to set the navigation panel to the right as you can see in the screen shot with the following code:


Map1.MapTools.PanZoomBar.FlowDirection = System.Windows.FlowDirection.RightToLeft;


But for putting it to the bottom, I will have to ask to the Wpf team. Tomorrow you should have the complete solution. Thank you.




Hi Sunil,


The PanZoomBar is actually a control; we can modify its position as we wanted. Here is a way to make it horizontal orientation. 

1, hook a SizeChanged event on the container of the map. For example, in our installed sample "DisplayASimpleMap", map's container is "LayoutRoot".

SizeChanged="LayoutRoot_SizeChanged"


2, in the event implemtation, here is the code:

private void LayoutRoot_SizeChanged(object sender, SizeChangedEventArgs e)
{
    Canvas.SetTop(Map1.MapTools.PanZoomBar, e.NewSize.Height - 360);
    Canvas.SetLeft(Map1.MapTools.PanZoomBar, e.NewSize.Width);

    RotateTransform rotateTransform1 = new RotateTransform();
    rotateTransform1.Angle = -90;
    rotateTransform1.CenterX = 0;
    rotateTransform1.CenterY = 360;
    Map1.MapTools.PanZoomBar.RenderTransform = rotateTransform1;

    var panPanel = (Canvas)((Grid)((Canvas)VisualTreeHelper.GetChild(Map1.MapTools.PanZoomBar, 0)).Children[0]).Children[0];
    panPanel.RenderTransformOrigin = new Point(.5, .5);
    RotateTransform rotateTransform2 = new RotateTransform();
    rotateTransform2.Angle = -90;
    panPanel.RenderTransform = rotateTransform2;
}


Here is the screenshot.


Please feel free to let us know if you have more queries.


Thanks,

Howard



I realize this is the Silverlight board, but I’m assuming the concept is similar in WPF.  I would like to just shift the pan zoom bar to the right slightly.



I’m trying to use this code in the map container’s sizechanged event and it has no affect on the position:


Canvas.SetLeft(Map1.MapTools.PanZoomBar, 80)






Hi Chad,


Welcome to MapSuite World, I have tried to recreate the problem but it didn't show up, attached is our test code would you please check it and tell us what we missed? followingis a result image on our end.


Waiting for your further information.


Summer



Post9922.txt (1.96 KB)



Hi Summer,



I guess the difference is I’m trying to accomplish the same thing in WPF.  I figured Silverlight handles layouts and rendering the same way as WPF, but maybe not.  I’m pretty new to WPF.  This is my XAML, which I’m just trying to tweak the DisplayAMapSample.xaml in the VB 2010 ThinkGeo WPF sample project.  I’ve tried handling the SizeChanged in both grid containers to no avail.  Thanks,



Chad


<Grid SizeChanged=“Grid_SizeChanged”>
       <Grid SizeChanged=“Grid_SizeChanged_1”>
           <uc1:WpfMap x:Name=“Map1” Loaded=“WpfMap_Loaded”></uc1:WpfMap>
           <uc2:InstructionPanel Width=“200” HorizontalAlignment=“Right” VerticalAlignment=“Top” Margin=“8” Opacity=“0.95”>
               <StackPanel>
                   <TextBlock x:Name=“InstructionLabel” Text=“This sample shows how to display a simple map.” TextWrapping=“Wrap” />
               </StackPanel>
           </uc2:InstructionPanel>
       </Grid>
   </Grid>


I just discovered I can modify the Margin property of the panzoombar at run time.  This allow me to slide it where I need it.



Chad

Hi Chad, 
  
 Great to hear it is sorted out, and if you have any more question, please feel free to let us know. 
  
 Best Regards 
  
 Summer