-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Relation member navigation #3604
Comments
I had considered this a little. I think what you want to do is jump previous/next way along a relation, like a route relation.. But I'm not sure how it would really work in practice. It's easy to do previous/next vertex, because you usually see a bunch of vertices on the screen at once, so jumping between them is not confusing. But with relations, child member ways could be really long.. The user wouldn't see very well where they jumped to. Also a way can have many kinds of parent relations that don't follow similar semantics.. e.g. - you highlight a segment, and say "next"... Next what? It could be the next segment in a route, or the vertex in a turn restriction, or the next segment in a multipolygon. Or anything. I kind of have my doubts about how useful this would be.. Also I'd like to figure out how to style route membership first. |
This is one one appllication. Some other examples are:
The viewport should not be changed as long as the way starts in the viewport in order to let the user watch the start position. We can just let the user scroll manually to the other end, or maybe we can reuse the "\" shortcut in order to center the viewport on the invisible end of the way.
You have the same problem in the vertex case: When selecting a connecting node there are multiple ways. Which one to stay on? The solution in the generalized case is also the same. You need to select the parent (relation or way) and go down to the child (member or vertex), which makes the parent the parent to stay on. |
Potlatch 2’s solution to this problem is to stay on the most recently selected way (or pick a way if none of the ways has ever been selected). It also has a / shortcut for cycling among the ways joined at the currently selected node. Potlatch 2 doesn’t have a way to navigate linearly among the members of a relation, but it does have a way to select all the members (#2152) which – combined with editing a multiple selection (#1761) – makes the use cases described above quite convenient. |
I have integrated keyboard member navigation into my pull request #3631.
This is similar to the case of way, but the logic to determine the related parent just from its selected childs only is dropped in the relation case, because it would be too confusing. The logic to reset the related parent does also have a little difference for relations in case of a multiselection: The related Parent is kept as long as the first selected entity is member of the related parent independent of other selected entities. For example this allows a future radial menu operation adding shift selected entities in front of the selected member to the related parent, which would be very useful for relations requiring a well defined sequence of members. |
#8264 and #8577 implement keyboard navigation between ways and their member vertices. The same keyboard shortcuts used there would make sense for navigating between relations and their member ways. However, I think it’ll be a bit more complicated to extend it to relations, because a relation’s members aren’t guaranteed to be loaded yet: #6656. |
Exploring an existing relation is currently a nightmare using iD, especially if members can't be identified by the name shown in the members section.
The current workflow is:
In order to simplyfy this, the vertex navigation can be generalized as a parent child navigation covering relation/member similar to way/vertex.
The shortcuts can be reused and a graphical equivalent like it is proposed in #3603 can be added to the membership editor.
This would reduce the workflow shown above to a single keystroke per member. Users need to be able to explore the existing data easily in order to understand OSM datastructures.
If acceptable, I might work on this issue myself later.
The text was updated successfully, but these errors were encountered: