streetcomplete / StreetComplete

Easy to use OpenStreetMap editor for Android
https://streetcomplete.app
GNU General Public License v3.0
3.82k stars 348 forks source link

[v36.0] Can we get back the option for Compass Mode? #3377

Open pkoby opened 2 years ago

pkoby commented 2 years ago

I tried the new version today with follow mode, and I can find no fault with the new functionality. I like the track of my path, and I think that pointing in the direction of movement is useful.

However, I don't think it's ideal for walking. For cycling, your focus is mostly on what's ahead, and you're not spending a lot of time looking around. When walking, though, I am constantly glancing around to see what's on either side, or weaving around a university campus aimlessly.

For walking, Compass Mode was excellent because I could face towards a quest and know exactly where to look. Now, I might see a quest to the side, but I don't know for sure that I'm facing the same way as the map (the direction takes awhile to catch up to a quick turn on foot).

Can I petition that we return to at least the option of using the compass? Perhaps it could be a triple toggle: tap once to find location, tap again to follow movement, tap a third time to follow compass. Then if you manually pan away, it turns black, tap again to return to red mode, then tap again to cycle. Maybe follow location only would also orient northwards?

mnalis commented 2 years ago

I'll second first part of this suggestion - as a pedestrian I prefer previous (compass orientation) behaviour... But in/on a moving vehicle I can see how new mode (direction of movement) would be preferred.

Perhaps just a adding a preference in settings menu (like the existing one for show all notes) asking whether one would like to use compass or direction of movement mode would be sufficient?

Because, if I go mapping as a pedestrian, I'm unlikely to often (eg. to warrant a button) switch to direction mode and back. And if I start as a bicyclist (or a passenger in a car/train/etc) in direction mode, I'm even less likely to change the setting to compass mode in that session at all.

As for the suggestion in the last paragraph, please no. (If we're going to use screen estate for new buttons, I'd much rather have a button for quick changing of quest preset, as I'm much more likely to change that; but that is a thought for some some other discussion). Also, please let's not start overloading what buttons do when pressed - we've just had a long-awaited massive simplification in that UI area in v36!

westnordost commented 2 years ago

@pkoby , I agree that the compass is useful in these situations. In fact, the compass is still used. It is now as before displayed as a err... triangle that faces away from your GPS position:

https://raw.githubusercontent.com/streetcomplete/StreetComplete/master/app/src/main/res/drawable-xhdpi/location_direction.png

This should be enough to see what quest you are looking at

smichel17 commented 2 years ago

I think having more than two modes would be confusing. That said, I agree that the compass direction is useful. I haven't shared this with anyone, but I was planning to open an issue and send a PR to modify follow mode to consider both your movement direction and compass direction — probably a weighted average, depending on the speed of your movement (moving fast = ignore compass; moving slow = mostly compass). Would something like that work for you?

While I'm here, a couple other miscellaneous thoughts:

triangle that faces away from your GPS position … should be enough to see what quest you are looking at

It is usually enough to see what I am looking at, except when the thing I am looking at is off screen, because it is to my side instead of in front of me, and the map is angled slightly wrong because of gps accuracy or going around a corner.

mnalis commented 2 years ago

@westnordost yes, triangle is shown (and is very useful!) but I can see how sometimes people (myself included) might prefer a whole screen (in 3D mode) to be rotated in compass direction (as it was in previous SC versions below 36). For example, on the left picture (simulated behavior in previous versions) it might be more easy to know what is exactly in front of you (and what is on your sides) as opposed to the right picture (current behavior).

Screenshot_20211013_233954_de westnordost streetcomplete debug2 Screenshot_20211013_233710_de westnordost streetcomplete debug2

pkoby commented 2 years ago

Thanks for all the quick input!

consider both your movement direction and compass direction — probably a weighted average, depending on the speed of your movement (moving fast = ignore compass; moving slow = mostly compass). Would something like that work for you?

I forgot about this option, but I had considered it as well. Yes, if I'm moving about 10mph (average, so it doesn't keep switching when the GPS bounces around) the follow movement mode is best, but walking speeds or stopped (which might still read as moving anyway) could be a compass mode.

triangle that faces away from your GPS position … should be enough to see what quest you are looking at

It is usually enough to see what I am looking at, except when the thing I am looking at is off screen, because it is to my side instead of in front of me, and the map is angled slightly wrong because of gps accuracy or going around a corner.

This exactly. Previous versions, if I saw a quest on the edge, I would turn towards it to get it in the longer part of the screen. Then it was easier to hit. I also do SC surveys while walking a dog, so I'm limited to one hand, so rotating the phone to get the quest closer to my thumb was useful. In v36, I've also encountered a quest near the edge that I am about to tap when the map rotates as it catches up to my movement and the quest moves. At least with compass mode, I knew where to expect the quest to go.

So at this point, I think two great options would be a speed-dependent option, or as @mnalis suggests, a toggle in the settings.

westnordost commented 2 years ago

What is the current "follow, from bird's eye view" function optimized for, anyway?

@smichel17 I tested it mostly while walking. I did a short trip via bike. (This is deliberate, you could say it is optimized for walking. I'd instead say it is optimized to not produce weird results while walking.)

weighted average, depending on the speed of your movement (moving fast = ignore compass; moving slow = mostly compass). Would something like that work for you?

I'd say it is something that could potentially be quite good. It needs experimentation and if the concept turns out to work well, careful calibration. The main issue to make this work as intended at all is to detect if someone is standing still. After all, it could simply be that the next GPS position takes a little longer than before to arrive.

a toggle in the settings.

You know, I am very wary to add any new toggles in the settings. So, this is not on the plan right now. In @mnalis example, you could just as well not use the "navigation mode" but just the "follow-me"-mode.

mnalis commented 2 years ago

I think having more than two modes would be confusing. That said, I agree that the compass direction is useful. I haven't shared this with anyone, but I was planning to open an issue and send a PR to modify follow mode to consider both your movement direction and compass direction — probably a weighted average, depending on the speed of your movement (moving fast = ignore compass; moving slow = mostly compass). Would something like that work for you?

As a resident give user a choice proponent, it would not work for me really, unless it was accompanied by preference in settings which would allow one to choose between:

It's not that I hate automation, I love it, but I go crazy when it does something "wrong" and I can't override it. Imagine if you could not override methods when you inherit a class in Kotlin (or whatever terminology is used these days) - it would be horrible for programmer, even if the original classes were superbly done and did a vast majority of things right.

In fact, you don't need imagine, just look at TangramES issues (like problems with mapping induced by arbitrary limit on max zoom which we cannot override - https://github.com/streetcomplete/StreetComplete/issues/2878, https://github.com/streetcomplete/StreetComplete/issues/2373, https://github.com/streetcomplete/StreetComplete/issues/2359...)

  • Showing the movement trail has really highlighted how inaccurate my gps is sometimes.

Yes, I knew GPX trail would help a lot for correctly orienting oneself (due to my previous experience with it in OsmAnd), that's why I suggested it initially (and am greatly happy it was implemented! :heart:)

  • I prefer manual orientation over all 3 of "follow my position" modes. I can adjust the map with much more precision to see the details I need to answer the quest I want than they can.

I agree. I allow automatic orientation mostly only when I have only hand available so am unable to manually rotate, and there often only until it point where I want it, and then I drop back to manual orientation.

  • I wonder whether it would make sense to optimize one of the "follow" modes for walking and the other for moving faster. What is the current "follow, from bird's eye view" function optimized for, anyway?

For me? :smile: I love that mode. I rarely use 3D mode of SC and find it distracting usually (especially when there are tall buildings with quests in/around them, when I would love even better if I could turn that current bird's eye 3D into real 2D flat-earth mode)

I guess some people (@mnalis?) like to follow but keep the map oriented north? This is really weird to me; I always prefer to keep the phone oriented roughly to the direction I'm currently facing.

While I sometimes do like "follow GPS but keep map oriented North" mode, I usually do that for navigation with active GPX track (eg. OsmAnd) in area I'm analyzed before or am familiar with its paper map, and not when map solving (eg. SC). I do it for example because if I'm following the path on north-east edge of the mountain, and "path is always before me" is useless piece of the information, while "oops, it looks like I'm currently going north and bending to north-west, I've likely taken a wrong turn sometimes before" is very useful.

For SC mapping however:

mnalis commented 2 years ago

You know, I am very wary to add any new toggles in the settings. So, this is not on the plan right now.

@westnordost If a preference setting was absolutely not an option (no pun intended), and only one automatic rotation was to remain in the SC, I would vote for compass direction (as used in previous SC versions) as it offers most flexibility (simply rotate map by rotating yourself when onehanded) and least possible confusion (no magic mode switching, no guessing how long one has to walk for direction-of-movement to point in same way as compass etc). (see my previous comment for more in-depth explanation why)

I would (as could be guessed) still love for that to be a user selectable preference, but I do understand that you dislike (and would like to avoid) them whenever possible (preferences, not users :smile:)

In @mnalis example, you could just as well not use the "navigation mode" but just the "follow-me"-mode.

See @pkoby and my comments about one-handed operation. While I do not use 3D follow-me rotate-me mode all the time, I find it extremely useful when one handed (eg. walking and carrying stuff, or walking with bike etc) to shortly jump into that mode, rotate myself slightly if needed (worked until v35) to rotate screen exactly as I want it, and then drop back to 2D follow-me mode. With v36, that is no longer possible (well, perhaps it is I one does hundred meters calculated walk, but that is unreasonable), so one-handed mode becomes much harder (if not impossible) to use.

smichel17 commented 2 years ago

@mnalis As usual, your posts produce an initial reaction of meme of person recoiling at a wall of text, but then are quite easily readable once that feeling subsides and I start to read them. :sweat_smile:

I'd instead say it is optimized to not produce weird results while walking

Good point; predictability/consistency are totally reasonable things to optimize for. So, we have the "smart mode" and the "dumb mode", so to speak :)

As a resident give user a choice proponent

I'll respond in a new discussion to avoid going too far off-topic here. In short: we agree more than it might seem.

I do it for example because if I'm following the path on north-east edge of the mountain

Okay, that's use case makes sense to me (and maybe it was someone else who mentioned mostly using follow+flat+north).

stuff moves on screen before I had a chance to click it … new much-more-slowly-changing "rotate to direction mode"

Now that the orientation updates happen less frequently, maybe it would be helpful to show a indicator right before that happens, to avoid surprise moves. It would need to be very subtle, to avoid being infuriating. I'm thinking something like, start rotating the view very, very slowly about a quarter second before jumping to the next orientation. Although, I guess the map is still moving with your location, so maybe this is not fixable anyway :P

The main issue to make this work as intended at all is to detect if someone is standing still. After all, it could simply be that the next GPS position takes a little longer than before to arrive.

Does LocationManager not continue to provide updates when someone is standing still? It seems like the sane behavior would be to notify subscribers that there is a location update, and the location is the same. If not, we'll need to find a workaround.

It needs experimentation and if the concept turns out to work well, careful calibration

Agreed. Not sure how long I will take to get to this as I have been spending a lot of time on StreetComplete recently and I need to do other things, too! :P So if someone else wants to try it before me, go for it.

matkoniecz commented 2 years ago

Sorry for asking that - but which of available settings was "compass mode"?

pkoby commented 2 years ago

In older versions, after tapping the locate button, tapping the north arrow button in the top-right would angle the map and point in with the phone compass.

westnordost commented 2 years ago

Alright, I'll accept a PR that introduces a setting. It should be a multiselect "Navigation mode: orientation" where the user can select between "by movement direction" "by compass direction" Default is "movement direction".

matkoniecz commented 2 years ago

In older versions, after tapping the locate button, tapping the north arrow button in the top-right would angle the map and point in with the phone compass.

Sadly I am still confused. Is "by compass direction" referring to

Is "movement direction" referring to

smichel17 commented 2 years ago

I think "compass" is the confusing word here becaus a compass normally points north, so unless you understood that SC is calculating the direction of the phone based on the compass sensor reading, you wouldn't connect the two. Maybe "movement direction" vs "phone orientation" or something life that.

kuba-orlik commented 2 years ago

I've tried very hard to adjust to the fact that the map isn't automatically oriented to the direction my phone is pointed and I just can't do it. Having to mentally rotate the map myself is extra effort for me and it's actively contributing to me solving less quests, as I'm often confused as to what I'm supposed to be looking at.

Can we at least get an option to disable follow mode in the settings?

matkoniecz commented 2 years ago

Can we at least get an option to disable follow mode in the settings?

It gets disabled when you move the map, after you do this map center is no longer glued to your position.

kuba-orlik commented 2 years ago

By that I meant can we have a toggle that when turned on would disable follow mode and use compass mode instead?

mnalis commented 2 years ago

Alright, I'll accept a PR that introduces a setting. It should be a multiselect "Navigation mode: orientation" where the user can select between "by movement direction" "by compass direction" Default is "movement direction".

I'm not an Kotlin programmer by any means, but I'm willing to have a try to implement this, unless someone else is planing to / is already working on it? If seems that this orientation change was implemented as a part of PR https://github.com/streetcomplete/StreetComplete/pull/3335, if I'm not wrong?

matkoniecz commented 2 years ago

unless someone else is planing to / is already working on it?

As far as I know: no, and noone mentioned that they wish to work on it.

rugk commented 2 years ago

Sorry but what happened to the "weighted average" idea? I also miss this option, but instead of a setting if the app automatically does the "right" thing, that's of course to be preferred, if possible. It's harder to implement, but maybe worth it, IMHO. And I think that solution would be very elegant – if it works.

Though, thinking about it, maybe forget it, I have one counter example: When being in bus/tram and sitting backwards to driving direction, I actually also rather want "compass mode" rather than "movement mode".

kuba-orlik commented 1 year ago

I'm not a Kotlin developer, but I've started a bounty on this issue

https://app.bountysource.com/issues/111947459-v36-0-can-we-get-back-the-option-for-compass-mode