[GraphHopper] Fwd: Re: instruction too early
Laura Barroso
laura at entumovil.cu
Tue Feb 17 15:32:10 UTC 2015
well,yes, I can probably do that, but I was thinking that if my current
location is near to one of the points that holds the instruction then I
will miss it, am I right?...however will do your suggestion.Thanks.
My usecase is guide the user depending on the gps current location and the
route.
> if you find once the next instruction why would you need to iterate over
> all points, why not just take the first of this instruction (getFirstLat
> etc) and check the distance? what is your usecase?
>
> Peter
>
>
> On 17.02.2015 16:15, Laura Barroso wrote:
>> you mean something like this?
>> DistanceCalc distCalc = Helper.DIST_EARTH;
>> distCalc.calcDist(instruction.getPoints().getLat(0),
>> instruction.getPoints().getLon(0), currentLocation.getLatitude(),
>> currentLocation.getLongitude())
>>
>> but still will have iterate over all the points inside the
>> instruction...
>> is there any better way????
>>
>>
>>> 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
>>>>>>>>
>>>>>>>>
>
>
> _______________________________________________
> GraphHopper mailing list
> GraphHopper at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/graphhopper
>
More information about the GraphHopper
mailing list