add Map inverse geocoding

add minimum/maximum to ScrollSpinBox
This commit is contained in:
2023-02-05 21:24:30 +03:00
parent 29aa0bda29
commit 3c29b7b566
9 changed files with 238 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
#include "pivariant_geoposition.h"
#include "mapitemimage.h"
#include "osm_geocoding.h"
#include "piqt.h"
#include "pivaluetree.h"
#include "ui_pivariant_geoposition.h"
@@ -31,7 +32,18 @@ PIVariantEditors::GeoPosition::GeoPosition() {
item->setScale(0.333 * appScale(this));
item->setPosition(ui.map->center());
ui.map->addItem(item);
connect(ui.map, &MapView::mapClicked, this, [item](QPointF c) { item->setPosition(c); });
OSMGeocodingResult * gc_res = nullptr;
connect(ui.map, &MapView::mapClicked, this, [this, item, &gc_res, ui](QPointF c) {
item->setPosition(c);
if (gc_res) gc_res->abort();
gc_res = OSMGeocoding::queue(c);
ui.label->setText("-");
connect(gc_res, &OSMGeocodingResult::ready, this, [&gc_res, ui]() {
ui.label->setText(gc_res->displayName());
gc_res = nullptr;
});
});
ui.map->mapClicked(ui.map->center());
if (dlg.exec() != QDialog::Accepted) return;
PIGeoPosition gp({item->position().x(), item->position().y(), 0.}, PIGeoPosition::Geodetic);
setValue(PIVariant::fromValue(gp));