光标处的纬度/经度大约 10 到 20 米?

Posted

技术标签:

【中文标题】光标处的纬度/经度大约 10 到 20 米?【英文标题】:Latidue/Longitude at cursor about 10 to 20 meters off? 【发布时间】:2022-01-20 13:50:19 【问题描述】:

我正在使用 ArcGIS QT/C++ api,我发现当我从光标位置(或任何一点)抓取 lat/lng 时,距离大约 10 到 20 米。 我想我可能在某个地方错过了 SpacialReference,......我只是不知道在哪里。 我正在使用 qt100.12 运行时 sdk。

谁能给我一个提示?

QPointF MapView::latLongAtCursor()
    Esri::ArcGISRuntime::Point point = _mapView->screenToLocation(cursor().pos().x(), cursor().pos().y());
    QString raw_coords = Esri::ArcGISRuntime::CoordinateFormatter::toLatitudeLongitude(
        point,
        Esri::ArcGISRuntime::LatitudeLongitudeFormat::DecimalDegrees, 
        6
    );
    QStringList exploded = raw_coords.split(' ');
    QString first = exploded.first();
    QString last = exploded.last();
    double latitude = exploded.first().remove(-1, 1).toDouble();
    double longitude = exploded.last().remove(-1, 1).toDouble();
    if(first.endsWith("S"))
        latitude = -abs(latitude);
    
    if(last.endsWith("W"))
        longitude = -abs(longitude);
    
    return QPointF(longitude, latitude);

*Edit/Update:似乎对 cursor() 的调用返回了一个无效的 x/y 位置。我正在使用 DockWidgets,看来问题出在 Qt 中。

【问题讨论】:

【参考方案1】:

原来cursor().pos() 返回的是应用程序中的全局位置,而不是小部件中的相对位置,需要明确的是,它返回的位置与QCursor::pos() 相同。

为了获得你的小部件的相对位置,你需要使用mapFromGlobal(QCursor::pos())

我现在设法使映射更加精确。在非常高的缩放级别下,它仍然显示出差异,但我认为我永远不会缩放那么远。

【讨论】:

以上是关于光标处的纬度/经度大约 10 到 20 米?的主要内容,如果未能解决你的问题,请参考以下文章

经纬度小数点后5位是多少米

计算新的经度,从旧的纬度+ n米

WorldWind Java Google Earth Like Zoom

给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度

给定中心坐标(纬度/经度)、半径(米)和中心角(度)的球体(地球)上的圆弧面积 [关闭]

彼此靠近的纬度、经度集群