-
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
Indoor mode #3097
Indoor mode #3097
Conversation
Wow, impressive work @zbycz! I really like this and would like to see this merged in some form. I'll need some time to think about how to present the UI in a way that doesn't clutter things up too much. I'll try to answer your questions now:
I think it's ok to call it indoor mode. (People will call it that anyway). You're right it's not technically a "mode" like the other exclusive drawing modes.
I'm leaning towards having the button smaller but available, maybe just an icon with tooltip, and it can transition open to reveal the indoor drawing controls when active. (I'm struggling with this same problem on #2699 - it's cool and useful, but where to put it?)
The right thing to do is to make a proposal and loop in the OSM tagging list. At this point, indoor editing is not solidly established, so I think you have a good chance of pushing the community in a sane direction.
Makes sense.. Yes I agree that in "indoor mode" the building outline should not render as an area, as this covers up the indoor features.
It would be better to squash them into fewer commits, but I'm not super picky about this.
I'll try to review it in more detail, but what I saw at a quick glance looks great! And the tests are much appreciated... |
Thanks, @bhousel ! I will make the proposal next week, in the meantime I am looking forward to your code comments 👍 Once we're done, I will sqash the commits in fewer. ad button positioning) the more buttons, the more the user think how complex the software is (aka Norman: The design of everyday things) - and I think iD should stay "simple". But also its a bad practise for controls to disappear unexpectedly. I completely agree with a smaller icon expanding to full control. What about placing Indoor-mode button in a dropdown menu "Tools" on the right of the top toolbar. It could be left closed forever, or left toggled opened. It would be a nice drawer for more useful tools in the future (including the #2699). |
I've been playing around with making the UI more responsive and supporting something like a "drawer" for more commands or options on existing commands. I don't really like it.. Maybe @samanpwbb has ideas? The problem is it either bumps down the other things in the layout, or it overlaps them. So we'd either need to 1. position the other UI stuff differently or 2. be ok about having them move (eh) or 3. something else. |
@@ -1048,6 +1071,9 @@ button.save.has-count .count::before { | |||
border-radius: 0 0 4px 4px; | |||
overflow: hidden; | |||
} | |||
.form-field > input:nth-child(3) { | |||
border-left: 0; | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the ui.type.range needs second input without border.
Would you suggest a better selector maybe?
I'm glad to see the opportunity of integrating indoor editing in main iD version. Feel free to reuse any custom part of iD-indoor, like presets or level parser (which handles lot of level-related tags) ;) |
if (context.indoor().enabled()) | ||
q.level = context.indoor().level(); | ||
else | ||
delete q.level; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@zbycz Please never ever omit curly braces around if-else, it’s generally considered as a bad practice and there are many documented cases when it caused a security issue.
Hi, just letting you know, we have moved a little further. I created official proposal and submited RFC to tagging list. In near future i will create new pull-request based on current master, thus I am closing this one. |
Great! We are thinking a lot about plugins lately and I would love to find a good way to merge your work into iD to make indoor editing easy for everyone. |
Progress? |
@TheAdventurer64 As I've mentioned before, any progress on an issue will be shown there. If you have any substantive questions or comments feel free to voice them. |
Hi,
I am submitting a little larger pull request. I am not sure if its possible to be merged as is, but I did my best and will be happy to cooperate further to make it so.
I’ve been engaged in OpenStreetMap since 2008 and for the time being I’ve led many workshops, written some school works and worked on getting the Czech community together on openstreetmap.cz. Last summer I had to come up with a topic for my final engineer thesis, so I decided to use the effort already invested in indoor mapping and chose to update the iD editor accordingly. Let me elaborate...
Current work-in-progress proposal is called Simple Indoor Tagging. I didn’t want to rely on WIP, so I realized there is already an accepted solution – the
level=*
tag.There are two challenges for indoor:
indoor=*
area features)landuse=*
areas, OSM started with highways + pois.Drawing
highways=*
for indoor feels very natural – corridors usually repeats every floor even in multi-storey buildings, it displays clear accessibility information, can be already used for routing and also works with parking highways. The logic is also very simple - when alevel=*
feature is in viewport - show “Indoor” button, and let the user filter on these.Several examples (my build):
level=*
xorrepeat_on=*
). Another building here.Well, i think I made my point - let’s discuss the technical background :-)
Some thoughts / questions:
level=*
features on screen. Would you agree?level=*
allows only separate values by semicolon, I borrowed three useful tagging from SimpleIndoor. Is it ok to use these? Should i maybe make new official proposition?level=0-12
or-3--1
for features spaning several floors.repeat_on
– for repeating the same (possibly multilevel) feature on other floors - ie. doors,toiletsmin/max_level
– when set on building, the building spans through these levels. It helps as a visual cue, and also for the renderers.indoor=*
areas, couldn't be clicked anyway. Kind of addresses the issue Right now it is impossible to select between multiple overlapping polygons #2225.Something to do in future
level=1.5
). But even now - any string value could be written in the level chooser, so it “works”.and
indoor=corridor+stairs=yes` as these had to be distinguished easily.Changelog until now:
iD.ui.IndoorMode
control uifeatures.indoor_different_levels
.indoor-mode
class for svg surfaceindoor=*
when indoor-mode enabled.indoor-mode
indoor_levels
as general field for building, usingiD.ui.preset.range
btw, it was a pleasure to work with iD codebase, also d3 is so very amazing :-)