organicmaps / organicmaps

🍃 Organic Maps is a free Android & iOS offline maps app for travelers, tourists, hikers, and cyclists. It uses crowd-sourced OpenStreetMap data and is developed with love by MapsWithMe (MapsMe) founders and our community. No ads, no tracking, no data collection, no crapware. Please donate to support the development!
https://organicmaps.app
Apache License 2.0
9.61k stars 923 forks source link

Add via (nearby) to intermediate waypoints #2699

Open pm4rcin opened 2 years ago

pm4rcin commented 2 years ago

I've posted the same issue in OSMAND's issue tracker https://github.com/osmandapp/OsmAnd/issues/13491. Screenshots are from OSMAND app but OrganicMaps has the same problem. I can paste screenshots from OM if necessary.

🚀 feature request

Description

Here's the route

Whenever I try to route on longer distance I add intermediate points. But the problem is that it routes through exact point and not nearby that point. Look at the screenshots: I add Olkusz as intermediate and it tells me to turn right in that city instead of going straight (through 94). It's the case with Graphhopper, Google Maps and OsmAnd. e6987fce-f5b6-4d08-bdb8-facb0d3575ad

Describe the solution you'd like

I think that there should be added popup when clicking "Wybierz Olkusz" (Choose Olkusz) with 2 options "Via Nearby" and "Via Point". It's the case with polish AutoMapa for Windows. 1df6d10e-8edb-4d08-bf07-abff30300649

Describe alternatives you've considered

This is how it looks in Automapa for Android https://youtu.be/T4BGcyVC0GE?t=13 "Przez okolicę" (Via Nearby)

biodranik commented 2 years ago

Can you please clarify? Is it about "don't route me to the point, but continue routing on the main road nearby"?

Markus40 commented 2 years ago

With Organicmaps faster routing it is not as problematic but setting intermediate points is pretty finicky.

Imagine that you want to choose a city as a intermediate point on your route. If you are zoomed out and click on the city it will navigate you to the center. I think that is almost never the desired result. The route should only touch the metropolitan area and not a specific point in the center.

The UI could show you the surface of the city you want to navigate through to differentiate it from the navigation to a single point.

The navigation to a surface instead of a point could also be used for normal navigation (without intermediate points). I don't think the navigation should end at the edge of the city limit but things like parking lots could profit from it. If I navigate to a parking lot poi, the navigation will not stop even if I already entered the parking lot because I am too far away from the poi-point. The navigation should stop as soon as I drive onto the surface of the parking lot.

Markus40 commented 2 years ago

There is a similar problem with roads. If i want to set an intermediate point on a certain road it does not work because single click will not lock onto roads and double click long-tap will not correct your aim and you will select some point a few dozen/hundred meters beside that road and on some roads even dictate the direction. It would be helpful if a single click could lock onto roads if there is no feature nearby and allow both directions.

pm4rcin commented 2 years ago

Can you please clarify? Is it about "don't route me to the point, but continue routing on the main road nearby"?

That's exactly what I would expect.

Imagine that you want to choose a city as a intermediate point on your route. If you are zoomed out and click on the city it will navigate you to the center. I think that is almost never the desired result. The route should only touch the metropolitan area and not a specific point in the center.

The UI could show you the surface of the city you want to navigate through to differentiate it from the navigation to a single point.

Fully agree.

The navigation to a surface instead of a point could also be used for normal navigation (without intermediate points). I don't think the navigation should end at the edge of the city limit but things like parking lots could profit from it. If I navigate to a parking lot poi, the navigation will not stop even if I already entered the parking lot because I am too far away from the poi-point. The navigation should stop as soon as I drive onto the surface of the parking lot.

That's also great feature idea but maybe we should move it to another issue so it would be easier to track this specific thing.

There is a similar problem with roads. If i want to set an intermediate point on a certain road it does not work because single click will not lock onto roads and double click will not correct your aim and you will select some point a few dozen/hundred meters beside that road and on some roads even dictate the direction.

That probably should be moved to another issue to not clutter this one. But I agree.

It would be helpful if a single click could lock onto roads if there is no feature nearby and allow both directions.

That sounds good but sometimes there are some small things nearby that could prevent that. We should probably test it manually and see if it works. But considering the precision of touchscreens it seems like a simple yet good enough for most cases. My idea would be to make more road markers on the roads e.g. if the name is A1 or S6 there should be more of that on screen. For example if you zoom-in slowly by your fingers and not by a button the name of the road is not visible. Like here if I move a screen a bit to right side the A4 that's on the left is not visible: signal-2022-06-10-145118

biodranik commented 2 years ago

@Markus40 did you try to use a long-tap to select any place on the map?

Markus40 commented 2 years ago

@Markus40 did you try to use a long-tap to select any place on the map?

Yes. "Double click" is just a writing error.

biodranik commented 2 years ago

I still don't fully understand the problem you're trying to solve. People choose intermediate points for a reason, usually to stop there and do something.

If you want to add intermediate point to correct the route without stopping there, that's another problem that can be solved differently:

  1. by providing alternate routes
  2. by automatically applying "stay on a highway" if user used a higher zoom level for the intermediate point
  3. by allowing user to drag the route
Markus40 commented 2 years ago

If a user has a long route and sets an intermediate point in a city, he would almost never want to visit the city centre.

If they have something specific to do in the city they would set a more accurate point to navigate exactly to the desired address. If they already know the city they would know the way when they get near and a navigation point in the city centre would be unnecessary and have to be removed manually.

I don't really see a situation where it would be disadvantageous to have navigation to the limits of a city (only in high zoom levels of course), except that it might be technically problematic to implement it properly.

Alternative routes would be nice but are a technical challenge, especially if you find real alternative routes and not just change the routing parameters. Even then they can only provide so many alternatives.

Staying on the highways would be easy to implement, but oftentimes find a worse route.

Allowing to drag a route isn't really different from setting a specific point. The same problem remains.

biodranik commented 2 years ago

What is the "surface of the city"?

Markus40 commented 2 years ago

Basically the area within city limits.

Instead of navigating to a specific point it would find the fastest way to reach the city limits.

As a intermediate stop, it would find a route that at some point passes within the city limits.

I'm not really sure about the size of the city limits chosen. There is an official city limits, but the method of determining those limits can vary from country to country or even within a country. Experimentation would show if that needs to be modified.

biodranik commented 2 years ago

What is the value for the user to drive him/her to some random point somewhere "in the city"?

Markus40 commented 2 years ago

The example with the end point was only meant for better understanding.

I have intended the navigation to the city limits only for intermediate points, so that the navigation via a desired alternative route is relatively seamless..

biodranik commented 2 years ago

So here we come back to the main issue/value: how to build a proper route to the final destination without stops, but also avoid unnecessary city centers, right?

Markus40 commented 2 years ago

I don't know how exactly the routing algorithm works under the bonnet, but I'll do my best:

An easy implementation could just calculate the routes like it is done now with an intermediate point but then look for the entrance and exit points to the city and connect them with a third route. This would not always find the ideal route but it would probably not be too bad. It would be be relatively easy to implement and not require a lot of changes in the routing algorithm.

To find the proper solution, it would be necessary to calculate the entire route in one go. I don't think modifying the routing algorithm for this is too challenging, it is just a ton of work, especially for such a small feature. That's why I think the simpler solution mentioned first is better suited here.

biodranik commented 2 years ago

If we talk about "like/not like the route":

  1. User builds a route.
  2. User doesn't like it and selects some intermediate point.
  3. User likes the route and navigates over it.

What exactly blocks users from adding intermediate points right on the highway? The inability to zoom? The inability to select the highway easier?

If we talk about "some special routing over city centers", why it can't be solved using the approach above? Just add all necessary intermediate points. Not everyone wants to have some special routing there. Not every automatically built route will be liked anyway.

Markus40 commented 2 years ago

It is mostly a quality of life improvement. Instead of having to zoom far in, and set a point right beside the highway the user can adjust the route from the high up. A few of these benefits could also be archived with with a lock-on onto streets if a special navigation is too much work.

If a user does not want special routing it is always possible to zoom in and pick exactly where you want to to go through.

The navigation algorithm also has much more room to work if it is not forced to go via the intermediate point. The user can roughly choose where to go, but the routing algorithm can optimise much better when it has that freedom. If the algorithm eventually gets smarter and receives live traffic data, for example, it can choose the best route through the city instead of driving straight into a traffic jam or asking the user to interact, which is never ideal while driving.

Rob-from-VI commented 1 year ago

I think the ability to drag a point would be great in this circumstance. First while zoomed out, you pick a point near where you want, and add a stop.

Then you could zoom in, and drag that point to different roads to see how the route works out. This works fairly well in google maps for windows.

I envision a long press to select the point, then slide finger to new location. May not be easy to implement.

biodranik commented 1 year ago

The long press also won't be discovered by users. Desktop patterns do not work well on mobiles, we need a better UX solution (or some hints should be additionally implemented).

Rob-from-VI commented 1 year ago

I think if release notes say that points can be moved, this would be obvious way I would try to do it.

Would it be possible to have some text in the point information to say right after coordinate info "press and drag to reposition"

After press the map position would freeze, and the point woul follow the finger 🤞

⁣Sent from Moto G7​

On Jul 4, 2023, 10:59 PM, at 10:59 PM, Alexander Borsuk @.***> wrote:

The long press also won't be discovered by users. Desktop patterns do not work well on mobiles, we need a better UX solution (or some hints should be additionally implemented).

-- Reply to this email directly or view it on GitHub: https://github.com/organicmaps/organicmaps/issues/2699#issuecomment-1621074862 You are receiving this because you commented.

Message ID: @.***>

Rob-from-VI commented 1 year ago

I just had another brilliant idea 😁

I noticed if I have an existing route, and I select a new point and choose route from, the existing start point moves to the new point, so this is great.

Now, if I have a multi stop route and i choose a new point, in addition to route from and route to, I could be offered the option to relocate stop, select number of stop to relocate, and presto.

What do you think?

Ps I have not found any issues with latest beta version yet

⁣Sent from Moto G7​

On Jul 4, 2023, 10:59 PM, at 10:59 PM, Alexander Borsuk @.***> wrote:

The long press also won't be discovered by users. Desktop patterns do not work well on mobiles, we need a better UX solution (or some hints should be additionally implemented).

-- Reply to this email directly or view it on GitHub: https://github.com/organicmaps/organicmaps/issues/2699#issuecomment-1621074862 You are receiving this because you commented.

Message ID: @.***>

biodranik commented 1 year ago

Please describe your idea in more concrete detail: what will be displayed on the screen and when? What happens when a user does this and that?

Rob-from-VI commented 1 year ago

I hope this helps clarify how it could work

I have a multi stop route and i choose a new point.

A new option would appear among the choices at the bottom

Route to, route from, ,"Relocate stop"

I tap relocate stop, and all stop numbers would be listed in a popup

I select number of stop to relocate

Or maybe better

I tap relocate stop and message says "tap stop to be relocated",

I tap the existing stop showing on the map

Done

⁣Sent from Moto G7​

On Jul 7, 2023, 1:10 AM, at 1:10 AM, Alexander Borsuk @.***> wrote:

Please describe your idea in more concrete detail: what will be displayed on the screen and when? What happens when a user does this and that?

-- Reply to this email directly or view it on GitHub: https://github.com/organicmaps/organicmaps/issues/2699#issuecomment-1624983956 You are receiving this because you commented.

Message ID: @.***>

biodranik commented 1 year ago

On iOS, there is already a UI to reorder stops, similar to that from Google maps. It can be implemented on Android too.