qml端写一个圆类,在主函数实例化成对象,画个圆

// A code block
var foo = 'bar';
import QtQuick 2.4
import QtPositioning 5.6
import QtLocation 5.9
//import QtQuick.Controls 2.12

MapItemGroup {
  id: groupPolyCircle
  property var myCoordinate: QtPositioning.coordinate(24.9394, 102.6394)
  property var distance:15000.0
  property color myColor: '#1f1e0b'
  property string customText: "\n\n"
  property var border_width: 0
  property var z_value: 0
   property var circle_opacity: 0
    z:z_value
//19dffb
  MapCircle {
    id:circle
    opacity:circle_opacity
    border.width: groupPolyCircle.border_width
    border.color: '#19dffb'
    center: groupPolyCircle.myCoordinate
    radius: groupPolyCircle.distance
    color: groupPolyCircle.myColor
    visible: true

  }
  MouseArea{
    id:mouse_circleInfo
    anchors.fill: circle
    acceptedButtons: Qt.RightButton
    onClicked: {
        groupPolyCircle.destroy();
      circleClickedSignal(groupPolyCircle.customText,groupPolyCircle.myColor,circle.center, circle.radius);
      console.log("Clicked on circle at (" + circle.center + ", " + circle.radius + ")")
    }
  }

  MapQuickItem {
    coordinate:QtPositioning.coordinate(circle.center.latitude+((groupPolyCircle.distance/2)/1113)*0.01,circle.center.longitude-((groupPolyCircle.distance/2)/1000)*0.01);
    sourceItem: Text {
      text: groupPolyCircle.customText
      color: "black"
      font.pixelSize: 20
      wrapMode: Text.Wrap
      fontSizeMode: Text.HorizontalFit //设置文字水平自适应宽度
     // width: 200 // Text控件宽度

//      verticalAlignment: Text.AlignVCenter
//      horizontalAlignment: Text.AlignHCenter
    }
  }

  function destroy_circle()
  {
        groupPolyCircle.destroy();
        circle.destroy();
  }

  //latitude 纬度 longitude 经度
  function calculateRadius(coord1, coord2)
  {
    var d=Math.PI/180;
    var f=coord1.latitude*d, h=coord2.latitude*d;
    var i=coord1.longitude*d - coord2.longitude*d;
    var e=(1 - Math.cos(h - f) + (1 - Math.cos(i)) * Math.cos(f) * Math.cos(h)) / 2;
//    console.log("radius ::"+2 * 6378137 * Math.asin(Math.sqrt(e)))
    return 2 * 6378137 * Math.asin(Math.sqrt(e));
  }

}

加载组件

  Component {
    id: circleComponent
    MyCircle {}
  }

主函数中写一个槽函数触发,画一个圆

  //画//空域的圆
  onChSigAddCircle: {
    //空域的圆
    var component = Qt.createComponent("MyCircle.qml")
    if(component.status === Component.Ready)
    {

      var circle = component.createObject(the_map)
      var point = Qt.point(0,0);
      var coord = the_map.toCoordinate(point);

      coord.z_value=10;
      coord.latitude = lat;
      coord.longitude = lng;
      circle.myCoordinate = coord;
      circle.distance = radius
        //青色的
      circle.myColor = '#c8f3f9';
      circle.customText = str;
      circle.border_width=5;
      circle.circle_opacity=0.5;

      the_map.addMapItemGroup(circle);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值