光标处的纬度/经度大约 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 米?的主要内容,如果未能解决你的问题,请参考以下文章
WorldWind Java Google Earth Like Zoom
给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度