以实现鼠标拖拽文本图层为例

GitHub:ArcGIS拖拽文本

作者:狐狸家的鱼

目的是利用鼠标进行拖拽。

实现两种模式,一种是屏幕上的拖拽,第二种是地图上图层的挪动。

屏幕上的拖拽其实跟ArcGIS没有联系,用qml就能写,但是地图图层上的挪动,就需要考虑到ArcGIS 图层的问题了。

鼠标拖拽都跟鼠标事件有关联,MouseEvent中的Drag()事件和onMousePressedAndHeld()以及onMouseReleased()事件。

1.屏幕上的拖拽

2.地图上图层的挪动

1、屏幕上的拖拽

为了方便,把两种方式写在了一个项目文件中。

Text{
id:tex;
text: "我还可以再挪两步(●ˇ∀ˇ●)";
font.pointSize: 15;
color: "yellow";
//font.bold: true;
MouseArea{
id:dragArea;
anchors.fill: tex;
drag.target: tex;
acceptedButtons: Qt.RightButton;
drag.axis: Drag.XAndYAxis
drag.minimumX: 0
drag.maximumX: mapView.width - tex.width
drag.minimumY: 0
drag.maximumY: mapView.height - tex.height
} }

2、图层的拖拽

这里是左键点击添加一个文本,然后用右键进行拖拽活动。

因为地图上的左键按压时会挪动地图,所以选择右键拖拽文本。

在ArcGIS中,MouseEvent中有个属性叫 button:int

返回产生鼠标事件的按钮,经过打印可以得到左键=1,中键=4,右键=2。以此来判断鼠标的左右键。

onMouseClicked: {//打印鼠标事件的按钮
console.log("clicked:",mouse.button);
}

属性解释说明了,鼠标按下事件的按钮有左键、右键、中键,但是对于鼠标移动事件,返回值永远是Qt.NoButton。所以在地图上利用鼠标进行拖动可能不行,只能进行点击挪动。

MapView {
id:mapView;
anchors.fill: parent
// set focus to enable keyboard navigation
focus: true Map {
//BasemapTopographic {}
BasemapImageryWithLabels {}
}
onMouseClicked: {
console.log("clicked:",mouse.button);
if(mouse.button === 1){//鼠标左键
textGraphic = ArcGISRuntimeEnvironment.createObject("Graphic");
textGraphic.geometry = mouse.mapPoint;
textGraphic.symbol = textSymbol;
addTextGraphicsOverlayer.graphics.append(textGraphic); }
}
onMousePressed: {//鼠标右键
if(mouse.button === 2){
textGraphic.geometry = mouse.mapPoint;
}
}
onMouseReleased: {
if(mouse.button === 2){
textGraphic.geometry = mouse.mapPoint;
}
} GraphicsOverlay{
id:addTextGraphicsOverlayer; }
TextSymbol{
id:textSymbol;
size: 15;
color: "yellow"
text: "我可以在地图上走两步(。^▽^)"
}
}

如有认识偏差和错误,还望指正,谢谢(づ ̄ 3 ̄)づ

Arcgis for qml - 鼠标拖拽移动的更多相关文章

  1. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  2. JavaScript鼠标拖拽特效及相关问题总结

    #div1{width:200px;height:200px;background:red;position:absolute;} #div2{width:200px;height:200px;bac ...

  3. 一款基于jQuery的支持鼠标拖拽滑动焦点图

    记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即 ...

  4. 【狼】unity 鼠标拖拽物体实现任意角度自旋转

    主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长 ...

  5. NGUI对象跟随鼠标拖拽移动

    public Camera WNGUICamera; Vector3 _WoldPosition;//指针的初始位置 // Vector3 _WoldAng; Vector3 WscreenSpace ...

  6. 鼠标拖拽定位和DOM各种尺寸详解

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. html5的鼠标拖拽

    鼠标拖拽 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  8. javascript鼠标拖拽的那些事情

    <html> <head> <title>javascript鼠标拖拽的那些事情</title> <meta http-equiv="C ...

  9. 设置zedgraph鼠标拖拽和局部放大属性(转帖)

    说一下几个属性的意义和具体应用: (1)鼠标拖拽显示区域 PanModifierKeys ->> Gets or sets a value that determines which mo ...

随机推荐

  1. [转帖]Ipvsadm参数详解(常用命令)

    Ipvsadm参数详解(常用命令) 2013年11月29日 12:41:40 怀素1980 阅读数:15901   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  2. C# Note32: 查漏补缺

    (1)Using的三种使用方式 (2)C#详解值类型和引用类型区别 (3)c#中字段(field)和属性(property)的区别 (4)C#中的 int? int?:表示可空类型,就是一种特殊的值类 ...

  3. docker学习笔记二

    知识点: 1)手动构建镜像 2)Dockerfile快速构建镜像 阿里云yum源https://opsx.alibaba.com/mirror 镜像制作nginx镜像实例 创建并运行centos容器 ...

  4. python设计模式第五天【单例模式】

    1. 定义 一个类只有一个实例,提供访问该实例的全局方法 2.应用场景 (1)多线程之间共享对象资源 (2)整个程序空间中的全局变量,共享资源 (3)大规模程序的节省创建对象的时间 3.代码实现(使用 ...

  5. java_manual的一点体会

    最近看了一下Alibaba的java_manual1.4,看了感觉有很多好的标准,这里摘录一些,也帮助自己的代码更加规范化 先放一些MySQL的规范: 这里附上MySQL官网给的参考手册上的 关键字和 ...

  6. TP5系统变量输出

    1.超全局变量 模板中: {$Think.sever.server_name}              //全部小写,输出blog.cn 控制器: $_SERVER['SERVER_NAME']  ...

  7. LodopJS代码模版的加载和赋值

    Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍JS模版的加载和赋值.两种模版都可以存入一下地方进行调用,比 ...

  8. 数据同步到redis中时候需要 需要给关联的表增加id 如果是一对多 则增加list存储id 如果是一个 则增加一个字段 ;目的是便于取值

  9. IntelliJ IDEA 取消【import .;】星号导包

    Setting -- Editor -- Code Style -- Java -- Imports 在 在 具体数值自行填写,够大即可,截图如下:

  10. Linux 部署KVM虚拟化平台

    简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Lin ...