GMap.net 中的缩放和平移

2024-01-16

我正在努力使GMap.Net http://greatmaps.codeplex.com/使用 WPF 内置事件控制启用多点触控,但我没有成功。

我发现了一系列关于多点触控的文章,例如this http://blogs.msdn.com/b/jaimer/archive/2009/11/04/introduction-to-wpf-4-multitouch.aspx and this http://blogs.msdn.com/b/ansont/archive/2010/01/11/multi-touch-in-wpf-4-part-3-manipulation-events.aspx一。在所有这些中,ManipulationContainer是一个画布和放置在其上的可移动控件,但在 GMap 问题中ManipulationContainer is GMapControl并且无法控制它。我该如何使用e.ManipulationDelta数据缩放和移动?

The GMapControl has a Zoom属性,通过增加或减少它,您可以放大或缩小。


快速浏览一下代码就会发现GMapControl is an ItemsContainer http://greatmaps.codeplex.com/SourceControl/changeset/view/f3ac356fa16e#GMap.NET.WindowsPresentation%2fGMap.NET.WindowsPresentation%2fGMapControl.cs.

您应该能够重新设计ItemsPanel模板并提供IsManipulationEnabled那里的财产:

<g:GMapControl x:Name="Map" ...>
   <g:GMapControl.ItemsPanel>
       <ItemsPanelTemplate>
           <Canvas IsManipulationEnabled="True" />
       </ItemsPanelTemplate>
   </g:GMapControl.ItemsPanel>
   <!-- ... -->

此时您需要连接Window:

<Window ...
    ManipulationStarting="Window_ManipulationStarting"
    ManipulationDelta="Window_ManipulationDelta"
    ManipulationInertiaStarting="Window_InertiaStarting">

并在代码隐藏中提供适当的方法(无耻地窃取并改编自此MSDN 演练 http://msdn.microsoft.com/en-us/library/ee649090.aspx):

void Window_ManipulationStarting(
    object sender, ManipulationStartingEventArgs e)
{
    e.ManipulationContainer = this;
    e.Handled = true;
}

void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    // uses the scaling value to supply the Zoom amount
    this.Map.Zoom = e.DeltaManipulation.Scale.X;
    e.Handled = true;
}

void Window_InertiaStarting(
    object sender, ManipulationInertiaStartingEventArgs e)
{
    // Decrease the velocity of the Rectangle's resizing by 
    // 0.1 inches per second every second.
    // (0.1 inches * 96 pixels per inch / (1000ms^2)
    e.ExpansionBehavior.DesiredDeceleration = 0.1 * 96 / (1000.0 * 1000.0);
    e.Handled = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GMap.net 中的缩放和平移 的相关文章

随机推荐

  • 在 Ruby on Rails 3 上上传多个文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想将多张图片上传到我的 Rails 3 应用程序 我目前正在使用 Paperclip 上传图片 并且我
  • 在 ReactJS 中显示/隐藏组件

    我们现在在使用 React 的过程中遇到了一些问题 但是它kinda归结为我们如何使用 React 的一部分 我们应该如何显示 隐藏子组件 这就是我们编码的方式 这只是我们组件的片段 click function if add here i
  • 如何在 Python 3 中使用 urllib.request 下载文件?

    所以 我正在搞乱urllib request在Python 3中 我想知道如何将获取互联网文件的结果写入本地计算机上的文件 我试过这个 g urllib request urlopen http media mcw cursecdn com
  • 如何为 reStructuredText、Sphinx、ReadTheDocs 等设置自定义样式?

    我想扩展使用的主题Sphinx and 阅读文档与我自己的自定义样式 为了让我的更改得以保留 最好的方法是什么 编辑 截至 2021 年 以下答案已过时 请使用html css files 在你的conf py而不是使用版本 1 8 之后的
  • 如何为 wxWidgets OpenGL 程序启用多重采样?

    多重采样 http en wikipedia org wiki Multisample anti aliasing是一种申请方式全屏抗锯齿 FSAA 在 3D 应用中 我需要在我的 OpenGL 程序中使用多重采样 该程序当前嵌入在wxWi
  • 如何在 Jest 中模拟嵌套函数?

    我收到这个错误 Cannot find module httpsGet from functions getSecureString test js httpsGet 是我自己的功能 位于按钮处getSecureString js 并通过调
  • 使用 OuterRef 的简单子查询

    我正在尝试做一个非常简单的Subquery使用OuterRef 不是为了实际目的 只是为了让它工作 但我一直遇到同样的错误 posts models py code from django db import models class Ta
  • ASP.NET MVC 部分视图不调用我的操作

    我刚刚开始在 ASP NET MVC 上构建一个小型简单网站 在一个页面中我使用部分视图 部分视图代表一个简单的表单 应该在单击按钮时提交 如果我第一次单击它提交的时间成功并返回我的部分视图和验证消息 如果内容无效 但如果我想再试一次 则不
  • “由于共享主机中的‘LOG_BACKUP’,数据库的事务日志已满”

    我有一个 Asp Net MVC 5 网站 在共享托管计划中采用实体框架代码优先方法 它使用开源网站面板 http www websitepanel net 控制面板及其 SQL Server 面板有些限制 今天想编辑数据库的时候 遇到了这
  • Android 在 HttpClient 中收到 403 后得到响应

    我有这样的代码 HttpClient httpClient new DefaultHttpClient HttpPost httpPost new HttpPost server try JSONObject params new JSON
  • 当单个模型被多个视图共享时

    有两种观点 listView QtGui QListView tableView QtGui QTableView 我继续定义一个自定义DataModel供双方使用listView and tableView class DataModel
  • oops 的完整形式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 的完整形式是什么OOPS 有人说面向对象的编程结构其他人说面向对象的编程系统 哪一个是正确的 编程范式是OOP 面向对象编程 其他一切都可以从它
  • 材质 UI - 轮廓选择标签未正确渲染

    根据演示 Material UI 概述选择输入的标签应位于选择框的顶部边框的顶部 然而 在我的应用程序中 z index标签的似乎将其放置在顶部边框后面 因此看起来像一条线穿过标签 我几乎完全从文档中获取了代码 据我所知 没有任何样式与此输
  • AngularDart:使用反应式表单生成器创建表单

    我正在尝试使用创建AngularDart 5 angular forms 2 该API似乎与angular forms 1我不知道如何创建一个FormGroup using FormBuilder and ControlGroup 下面是我
  • python 中真的存在联合类型吗?

    由于Python是动态类型的 我们当然可以这样做 def f x return 2 if x else s 但这是 python 真正的用途吗 或者换句话说 联合类型是否像 Racket 中那样存在 或者我们只像这样使用它们 def f x
  • 使用git中的hooks导入和导出到csv

    我想知道这是否可能 创建连接到 cvs 的共享 git 存储库 post two hooks to it 每次有人从中提取时 它都会从 cvs 存储库导入 每次有人推送它时 它都会导出到 cvs 存储库 基本上创建一个对 git 用户完全透
  • XDT Transforms - 变换变换

    我正在创建一个 nuget 包 其中安装该包的部分结果是修改我的 web release config 我使用 web release config install xdt 将元素插入到此文件中没有问题 但我需要在要插入的元素上保留 xdt
  • Idris 中类型的模式匹配

    可能这是基本的 但我不明白为什么下面的函数回答 1fnc Nat并且 对于fnc 整数 它甚至没有作为模式包含在内 fnc Type gt Integer fnc Bool 1 fnc Nat 2 您不能对类型进行模式匹配 也不应该这样做
  • Leaflet - 可拖动标记和坐标以字段形式显示

    我必须做一个可拖动的标记 它的坐标应该显示在字段中 它将成为 PHP 联系表单的一部分 我创建了一个可拖动标记 请帮助我现在做什么 var marker L marker new L LatLng 53 471 18 744 draggab
  • GMap.net 中的缩放和平移

    我正在努力使GMap Net http greatmaps codeplex com 使用 WPF 内置事件控制启用多点触控 但我没有成功 我发现了一系列关于多点触控的文章 例如this http blogs msdn com b jaim