Arcgis for qml - 鼠标拖拽移动
以实现鼠标拖拽文本图层为例
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 - 鼠标拖拽移动的更多相关文章
- CSharpGL(20)用unProject和Project实现鼠标拖拽图元
CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...
- JavaScript鼠标拖拽特效及相关问题总结
#div1{width:200px;height:200px;background:red;position:absolute;} #div2{width:200px;height:200px;bac ...
- 一款基于jQuery的支持鼠标拖拽滑动焦点图
记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即 ...
- 【狼】unity 鼠标拖拽物体实现任意角度自旋转
主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长 ...
- NGUI对象跟随鼠标拖拽移动
public Camera WNGUICamera; Vector3 _WoldPosition;//指针的初始位置 // Vector3 _WoldAng; Vector3 WscreenSpace ...
- 鼠标拖拽定位和DOM各种尺寸详解
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- html5的鼠标拖拽
鼠标拖拽 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- javascript鼠标拖拽的那些事情
<html> <head> <title>javascript鼠标拖拽的那些事情</title> <meta http-equiv="C ...
- 设置zedgraph鼠标拖拽和局部放大属性(转帖)
说一下几个属性的意义和具体应用: (1)鼠标拖拽显示区域 PanModifierKeys ->> Gets or sets a value that determines which mo ...
随机推荐
- Html5使用canvas作图线宽很粗
自己使用canvas画图是碰到的问题,在这里记录一下.我把lineWidth设置为1,但是很粗,而且发虚.代码如下: <script type="text/javascript&quo ...
- Button按钮为什么无缘无故会提交form表单?
我的form表单里有好几个Button按钮,每个按钮有不同的功能,可是这些按钮居然都有提交功能,真是把我惊呆了 <button class="btn btn-info " o ...
- Js中instanceof 的用法
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”. ...
- Linux安装mysql5.6
安装mysql5.6https://www.cnblogs.com/wangdaijun/p/6132632.html
- vue-router路由懒加载(解决vue项目首次加载慢)
懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...
- 转:win7下git凭据导致无法clone代码
win7下存在一个凭据管理的情况,如果旧凭据没有删除,用新账户是无法clone代码的. https://blog.csdn.net/qq_34665539/article/details/804082 ...
- 压测工具使用(vegeta)
一.压测工具vegeta 1.介绍 Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库. 官方地址:https://github.com/tsen ...
- Python的web编程
1.urlparse模块 urlparse.urlparse() 将一个url转化为(prot_sch, net_loc, path, params, query, frag)的元组 url ...
- SWT 几个sample网站
https://www.programcreek.com/java-api-examples/org.eclipse.swt.custom.ScrolledComposite https://o7pl ...
- List接口方法
package cn.zhou.com; /* * List?-------是啥? Collection 的一个子接口! * * 集合?容器? * * 区分容器,每个容器的数据结构不一样! * 集合, ...