Nachkommastellen für Pixelkoordinaten beschränken
Ich habe mit der Maus ein Polygon gezeichnet und dabei entstanden Punkte wie "407.87421317416795,362.4416763586253". Die vielen Nachkommastellen stehen in keinem Verhältnis zur Präzision meines Mauszeigers bei der Zoomstufe.
Ich wär dafür, dass wir vorerst eine Config-Option namens z.B. maxCoordinateDecimals
einführen, mit Standardwert 0, die angibt, wie viele Nachkommastellen wir für vom Benutzer wirklich beabsichtigt halten. Die einbindende Anwendung kann das notfalls ja höher setzen. Wer eine Idee hat, wie die Präzision sinnvoll mit der Zoomstufe zum Zeitpunkt des Klicks justiert werden kann, soll ein separates Feature Request dafür aufmachen.
Abschneiden könnten wir je nach Code-Stelle z.B. mit
svg.replace(/\d*\.\d+/g, m => (+m).toFixed(config.maxCoordinateDecimals))
,
müssten aber ggf. die Ersetzung auf Tags einschränken, bei denen wir uns darauf verlassen können, dass Punkte mit Ziffern dahinter nur bei Koordinaten vorkommen. Das sollte eigentlich bei allen nach dem initialen <?xml … ?><svg …>
gegeben sein.
Allerdings kann es durch Abschneiden dazu kommen, dass Punkte zusammenfallen, die vorher nur seeeehr nah beieinander lagen. Wir müssen also ggf. danach die Form bereinigen, um wenigstens aufeinanderfolgende gleiche Punkte zusammenzufassen. Linien mit Länge 0 (kein zweiter verschiedener Punkt) oder Flächenformen mit Flächeninhalt 0 (weniger als 3 verschiedene Punkte) sollten wir dann wohl als Unfall betrachten und verwerfen.