Qt快速映射多段线插入坐标

Qt快速映射多段线插入坐标,qt,qt-quick,qtlocation,Qt,Qt Quick,Qtlocation,我的地图上有一条多段线,当用户在两个现有点之间单击时,我想向其添加一个新的坐标 我可以通过以下方式获得点击事件:- MouseArea { id: mouseArea anchors.fill: parent acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: { console.log('LINE'); } } 但是我不知道如何为insertCoordinate()计算

我的地图上有一条多段线,当用户在两个现有点之间单击时,我想向其添加一个新的坐标

我可以通过以下方式获得点击事件:-

 MouseArea {
    id: mouseArea
    anchors.fill: parent
    acceptedButtons: Qt.LeftButton | Qt.RightButton
    onClicked: {
        console.log('LINE');
    }
}

但是我不知道如何为insertCoordinate()计算所需的索引,因为似乎没有一种方法可以单击线段的开始/结束顶点。这可能吗?

我也有类似的问题。当前,如果不写入新的映射对象类型,则无法执行此操作。因此,我完全改变了方法,并做了以下工作:-

  • 已停止对地图使用QtLocation,因为它目前限制太多
  • 将WebKit控件与传单集成为HTML浏览器中的地图提供程序
  • 使用WebChannel和WebSocketServer通过javascript API与地图通信

这给了我在地图上所需的所有灵活性,因为传单易于配置和扩展,同时允许我在Qt中编写桌面应用程序的其余部分。我重新访问了这个项目,找到了一种不用Webkit就能完成的方法。这相当复杂:-

1) 使用“单击”按钮获取坐标

var mapCoord=gpxLine.mapToItem(mapView、mouseX、mouseY);
var coord=mapView.toCoordinate(Qt.point(mapCoord.x,mapCoord.y));
2) 使用此坐标在路径中迭代并计算其最近的路径线段

浮动距离=1000000;
浮点数dx=0;
int指数=0;
float x0=坐标经度(),
y0=坐标纬度(),
x1y1x,
x1y1y,
x2y2x,
x2y2y;
双A,B,C,D,dot,len_sq,param,xx,yy,D_x,D_y;
对于(int i=0;i1){
xx=x2y2x;
yy=x2y2y;
}否则{
xx=x1y1x+参数*C;
yy=x1yy+param*D;
}
d_x=x0-xx;
d_y=y0-yy;
dx=sqrt(d_x*d_x+d_y*d_y);
如果(dx<距离){
距离=dx;
指数=i;
}
}

3) 这给了我索引,所以我现在可以在索引处插入坐标

这是如何回答问题的?