Fix snapping to layers for the import button

This commit is contained in:
pietervdvn 2021-12-05 05:21:03 +01:00
parent 4f403c4bfc
commit ae045b75cf
3 changed files with 14 additions and 9 deletions

View file

@ -34,6 +34,7 @@ import ReplaceGeometryAction from "../../Logic/Osm/Actions/ReplaceGeometryAction
import CreateWayWithPointReuseAction from "../../Logic/Osm/Actions/CreateWayWithPointReuseAction";
import OsmChangeAction from "../../Logic/Osm/Actions/OsmChangeAction";
import FeatureSource from "../../Logic/FeatureSource/FeatureSource";
import {OsmObject, OsmWay} from "../../Logic/Osm/OsmObject";
export interface ImportButtonState {
@ -300,7 +301,7 @@ export default class ImportButton extends Toggle {
importClicked: UIEventSource<boolean>): BaseUIElement {
const confirmationMap = Minimap.createMiniMap({
allowMoving: true,
allowMoving: false,
background: o.state.backgroundLayer
})
confirmationMap.SetStyle("height: 20rem; overflow: hidden").SetClass("rounded-xl")
@ -411,18 +412,21 @@ export default class ImportButton extends Toggle {
isImported: UIEventSource<boolean>,
importClicked: UIEventSource<boolean>): BaseUIElement {
async function confirm() {
async function confirm(tags: any[], location: { lat: number, lon: number }, snapOntoWayId: string) {
if (isImported.data) {
return
}
o.originalTags.data["_imported"] = "yes"
o.originalTags.ping() // will set isImported as per its definition
const geometry = o.feature.geometry
const lat = geometry.coordinates[1]
const lon = geometry.coordinates[0];
const newElementAction = new CreateNewNodeAction(o.newTags.data, lat, lon, {
let snapOnto : OsmObject = undefined
if(snapOntoWayId !== undefined){
snapOnto = await OsmObject.DownloadObjectAsync(snapOntoWayId)
}
const newElementAction = new CreateNewNodeAction(tags, location.lat, location.lon, {
theme: o.state.layoutToUse.id,
changeType: "import"
changeType: "import",
snapOnto: <OsmWay> snapOnto
})
await o.state.changes.applyAction(newElementAction)

View file

@ -91,7 +91,7 @@ export default class SimpleAddUI extends Toggle {
return presetsOverview
}
function confirm(tags, location, snapOntoWayId?: string) {
function confirm(tags:any[], location: {lat: number, lon:number}, snapOntoWayId?: string) {
if (snapOntoWayId === undefined) {
createNewPoint(tags, location, undefined)
} else {

View file

@ -98,7 +98,8 @@ export default class ConfirmLocationOfPoint extends Combine {
]).SetClass("flex flex-col")
).SetClass("font-bold break-words")
.onClick(() => {
confirm(preset.tags, (preciseInput?.GetValue()?.data ?? loc), preciseInput?.snappedOnto?.data?.properties?.id);
console.log("The confirmLocationPanel - precise input yielded ", preciseInput?.GetValue()?.data)
confirm(preset.tags, preciseInput?.GetValue()?.data ?? loc, preciseInput?.snappedOnto?.data?.properties?.id);
});
if (preciseInput !== undefined) {