qml鼠标拖动_Arcgis for qml - 鼠标拖拽移动
以實現鼠標拖拽文本圖層為例
目的是利用鼠標進行拖拽。
實現兩種模式,一種是屏幕上的拖拽,第二種是地圖上圖層的挪動。
屏幕上的拖拽其實跟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:0drag.maximumX: mapView.width-tex.width
drag.minimumY:0drag.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: trueMap {//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 ̄)づ
總結
以上是生活随笔為你收集整理的qml鼠标拖动_Arcgis for qml - 鼠标拖拽移动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘集集怎么就破产了呢?
- 下一篇: mybatis 不确定结果集集_集集丨与