[GraphHopper] Fwd: Re: instruction too early

Peter graphhopper at gmx.de
Tue Feb 17 14:51:41 UTC 2015


Laura,

why not find the next instruction and only display it if the current
location is close to it? No need to do unnecessary find() calls.

> until the max distance between
> one of the edges and the current position is right, even is that mean that
> the user don't get any instruction at all


Why not specify the allowed maximum distance to the route in the find
method appropriately?

Regards,
Peter


On 17.02.2015 14:43, Laura Barroso wrote:
> oh boy, so that's what's happening...this is not good for me, I'm not
> interested in knowing the next instruction until the max distance between
> one of the edges and the current position is right, even is that mean that
> the user don't get any instruction at all because he don't get close
> enough to them. ok, Thanks a lot for the clarification, now everything
> gets more sense.
> Thinking a good approach maybe override instructionList class in order to
> modify this behavior to suit my needs. Second approach: compute everything
> twice, one the instructionlist(in the find method) and the second on my
> method...
>
>> Hi Laura,
>>
>> I took a look at InstructionList.find() and actually found some
>> inconsistent behaviour:
>> https://github.com/graphhopper/graphhopper/issues/331
>>
>> Nevertheless I don't think this is the reason for the problems you
>> described.
>>
>> Maybe to avoid misunderstandings, the find(lat, lon, dist) method is
>> supposed to work as following:
>> Given lat,lon find the closest point on the route. If lat,lon is not
>> more than than dist away from the route, then it yields the upcoming
>> instruction (even if this instruction is a lot further away than dist).
>>
>>> Easy: any point in Havana I have test routes in Miramar, Vedado and
>>> Guanabacoa, note those are like areas that are not close to each
>>> other(at
>>> list Guanabacoa from the rest), the last point that I test was:
>>> START:  latitud: 23.12529533541739 longitude: -82.41401873360883
>>> END: latitud: 23.124871881707463 longitude: -82.4237889156866
>>> The route that I create was on foot, for android purpose. Thanks!
>>>
>>>
>> To find the reason for your exact problem, it would help a lot if you
>> can also give me lat, lon coordinates for which you don't get any
>> instruction or the instruction within wrong distance.
>>
>> Cheers,
>> Jan
>>
>>>> Hi Laura,
>>>>
>>>> thanks for the clarification. i will take a look into this, but it
>>>> would
>>>> be helpfull if you can provide me start and end point of the route, as
>>>> well as one or two points where there is a wrong instruction or one
>>>> missing.
>>>>
>>>> Jan
>>>>
>>>>> Hello, thanks for your reply, I was not referring to that issue but it
>>>>> is
>>>>> quite similar to was happen to me... however I know that graphhopper
>>>>> generate all the instructions for the route, I check it out every
>>>>> time.
>>>>> The problem is that it gives me the wrong instruction at the wrong
>>>>> time.
>>>>> The sniped code you see is part of the class that overrides
>>>>> MyLocationOverlay, on the onLocationChanged method.
>>>>> I tell graphhopper to give me the next instruction in this piece of
>>>>> code:
>>>>> Instruction instruction = il.find(location.getLatitude(),
>>>>> location.getLongitude(), 2);
>>>>> il is the InstructionList that is created as part of the route, I pass
>>>>> it
>>>>> to the class and every time that location changes I check if there is
>>>>> anything to say to the user.
>>>>
>>>>> Hi Laura,
>>>>>
>>>>>
>>>>>> Hello everyone: I notices that graphhopper is giving me the
>>>>>> instructions too early and sometimes it wont even give me anything,
>>>>>> I think I read about an issue pointing that but now is close...
>>>>> maybe you refer to this issue
>>>>> https://github.com/graphhopper/graphhopper/issues/94 regarding missing
>>>>> instructions?
>>>>>
>>>>>
>>>>>> I override MyLocationOverlay class, and this is my code:
>>>>>> @Override public void onLocationChanged(Location location) {
>>>>>> super.onLocationChanged(location);
>>>>>> if (lastLocation == null || location != lastLocation) {
>>>>>> lastLocation = location; if (il != null) { Instruction instruction
>>>>>> = il.find(location.getLatitude(), location.getLongitude(), 2); if
>>>>>> (instruction != null && instruction !=
>>>>> lastInstruction) {
>>>>>> lastInstruction = instruction; String text =
>>>>> lastInstruction.getTurnDescription(esTR);
>>>>>> Toast.makeText(context, text,
>>>>> Toast.LENGTH_LONG).show();
>>>>>> if (tts != null) { tts.speak(text, TextToSpeech.QUEUE_FLUSH,
>>>>>> null); } } } } }
>>>>> I would take a look into this, but I don't understand yet where
>>>>> exactly
>>>>> your code hooks into the GraphHopper Code. I do not see any
>>>>> LocationOverlay class, but maybe you can point me there with a github
>>>>> link.
>>>>>
>>>>>
>>>>>> Note that it suppose to give me the instruction with at list 2
>>>>>> meters of distance, last time I check it gave me the instruction
>>>>>> with at list 5 meters of distance in the first edge...the next turn
>>>>>> wont dispatch anything at all...what could be happening? My start
>>>>>> point now is branch "issue 314" since I haven't being able to
>>>>>> download the complete repository(problems with my connection). any
>>>>>> help will be appreciated.
>>>>>
>>>>> Cheers,
>>>>> Jan
>>>>>




More information about the GraphHopper mailing list