Skip to content
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

How to deal with Arrivals? #61

Open
freenerd opened this issue Oct 31, 2016 · 8 comments
Open

How to deal with Arrivals? #61

freenerd opened this issue Oct 31, 2016 · 8 comments

Comments

@freenerd
Copy link
Member

Currently we have one step in OSRM for the arrival. We are emitting one instruction for it:

{
    "step": {
        "maneuver": {
            "modifier": "left",
            "type": "arrive"
        },
        "name": "Street Name"
    },
    "instruction": "You have arrived at your destination, on the left"
}

To deal correctly with arrivals, we would actually need TWO instructions though, one after the last instruction before arrival, one on arrival:

  • In 200 meters, you will arrive at your destination, on the left
  • You have arrived at your destination, on the left

There are several solutions here:

  1. The client could deal with this exclusively (given that they also already implement distances). The text instruction would need to be in the present then:
  • In 200 meters, you arrive at your destination, on the left
  • You arrive at your destination, on the left
  1. We make osrm-text-instructions alert level aware
  • Needs a new ticket, i'm still undecided if and how we should do this
  1. We add a new arrivals type in osrm-backend
  • This sounds like it would be way too much effort with something that is actually very specific to the layers above.

For now I'd go with option 1.

/cc @MoKob @daniel-j-h @TheMarex @danpat @1ec5 @willwhite @pveugen

@1ec5
Copy link
Member

1ec5 commented Oct 31, 2016

For option 1, we should use the imperative like in every other instruction, not present tense. So: "Arrive at your final destination".

@TheMarex
Copy link
Member

Just a note on 3 because I think there is some context needed here on how we encode instructions:

  • maneuver is the Maneuver that a driver needs to execute to turn on the current road segment
  • everything else in RouteStep references the segment that follows.

That means for the a normal route we would see this a as the last two instructions:

[
    {
        "maneuver": {
            "modifier": "left",
            "type": "turn"
        },
        "duration": 50,
        "distance": 200,
        "name": "Street Name"
    },
    {
        "maneuver": {
            "modifier": "left",
            "type": "arrive"
        },
        "duration": 0,
        "distance": 0,
        "name": "Street Name"
    },
]

The information that the arrival will happen in 200m is already encoded in the previous instruction. Inserting a new instruction type between those instructions would break the convention that an RouteStep describes the route from the maneuver location until the location of the next maneuver.

Hence I agree with @freenerd's assessment that 3 would be a complicated addition to OSRM and IMHO probably more confusing then helping.

@1ec5
Copy link
Member

1ec5 commented Jul 27, 2017

At least in English, the imperative form would be logical (since the user has to actively arrive at the waypoint), consistent with all the other instructions, and compatible with distance-based instructions:

  • Continue for 300 feet, then arrive at your destination
  • In 200 feet, arrive at your destination, on the left
  • Arrive at your destination, on the left

@danpat
Copy link
Member

danpat commented Jul 27, 2017

I'm no linguist, but as a native English(AU) speaker:

  • In 200 feet, you will arrive at your destination, on the left.

sounds more natural. I don't know why, but "arrive at your destination" alone is awfully....authoritative.

@1ec5
Copy link
Member

1ec5 commented Jul 27, 2017

Sure, that would be a further improvement, but it’s blocked on having distance-based instructions in the first place: #88. Plus, it wouldn’t sound quite as bad if the developer will have had the opportunity to name the destination (#134).

@1ec5
Copy link
Member

1ec5 commented Jul 27, 2017

Here’s a less authoritative-sounding alternative:

  • In 200 feet, the destination is on your left
  • The destination is on your left

@MoKob
Copy link

MoKob commented Jul 27, 2017

How about: 🎉 another on time arrival powered by Mapbox (anyone took a Ryanair flight, ever?)
But enough trolling:

I remember hearing stuff like You have reached your destination..

I would not use on the left in early announcements, as it is overly chatty and wouldn't help me early on. Even as you will sounds more natural, @danpat I feel the arrive at your destination might still have the benefit of being less chatty.

So I'd prefer @1ec5 suggestion for early information and possibly two sentences for the actual arrival (here no major maneuver has to take place anymore).

  • In 200 feet, arrive at your destination
  • You have reached your destination. The destination is on your left.

@1ec5
Copy link
Member

1ec5 commented Jul 27, 2017

Mainly I find the use of present perfect tense (“have arrived”, “have reached”) to be awkward or overly dispassionate. Is it strictly necessary to say “arrive” or “reach”? Maybe this is a difference between what a user would expect in a Web interface versus in voice guidance, or just my American bias. But this feels a lot more natural to me:

  • Continue 300 feet to the destination
  • The destination is on your left

(or: You made it! 🎉😄)

In any case, #88 means we can only provide one instruction that would be used both before and during arrival. A client such as the Mapbox Navigation SDK for iOS could work around this problem by providing its own pre-arrival string instead of going through this library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants