![]() |
|
HOW TO PROGRAMMATICALLY PAN TO SPECIFIC POINT - Printable Version +- AB4D Forum (https://forum.ab4d.com) +-- Forum: Products Forums (https://forum.ab4d.com/forumdisplay.php?fid=4) +--- Forum: ZoomPanel (https://forum.ab4d.com/forumdisplay.php?fid=8) +--- Thread: HOW TO PROGRAMMATICALLY PAN TO SPECIFIC POINT (/showthread.php?tid=4151) |
HOW TO PROGRAMMATICALLY PAN TO SPECIFIC POINT - Shafferjb - 10-01-2019 I am using the ZoomPanel to navigate around a map image that is 21600x21600. The ZoomPanel itself is 2160x2952 (this is on a 4K display). On the map are markers (like GoogleMap markers). The location of the markers are relative to the map image, so a given marker's location might be 15850,9720. In general, the zoom panel works great. However, based on user activity, I need to programmatically center a given marker in the viewbox (or as near to center as the map limits allows). I have tried all the various "Translate" methods, and none of them work as I would have expected. When I call the Translate methods, the map moves within the ZoomPanel, but it doesn't move where I expect it to. For example, when I call TranslateToCenter(new Point(10800,10800)) or TranlateToCenterRelative(new Point(0.5, 0.5)), I would expect the map to move to the center of the map image , but it only moves the map a short (and seemingly random) distance towards the center. What is the correct method of programmatically setting the center point to a specific x,y location, or getting the given x,y location as close to the center as possible without violating the Viewbox limits? Here is the xaml for the ZoomPanel: <ab2d:ZoomPanel x:Name="exploreMapZoom" IsViewboxLimited="True" ViewboxLimits="0 0 1 1" ViewboxMinSize="0.1 0.1" Stretch="UniformToFill" CenterPosition="0.5 0.5" CenterPositionUnits="Relative" IsAnimated="True"> <Grid x:Name="exploreMapGrid" Width="21600" Height="21600"> <Image x:Name="exploreMapImage" HorizontalAlignment="Left" VerticalAlignment="Top" Source="ExploreMap.jpg"/> </Grid> </ab2d:ZoomPanel> Attached is a screen capture of the map within the ZoomPanel, including a ZoomPanelDump. RE: HOW TO PROGRAMMATICALLY PAN TO SPECIFIC POINT - abenedik - 10-01-2019 The TranslateToCenter and TranlateToCenterRelative methods are used to simulate the mouse panning. To set a new center position you can simply call (this sample set the center to the center of the map - the CenterPositionUnits property must be set to Relative): Code: ZoomPanel1.CenterPosition = new Point(0.5, 0.5);If you want to have animated panning to the new location you can use the SetZoom method: Code: ZoomPanel1.SetZoom(new Point(0.5, 0.5));RE: HOW TO PROGRAMMATICALLY PAN TO SPECIFIC POINT - Shafferjb - 10-01-2019 Calling "SetZoom" works perfectly. Thanks for the help! |