2011-06-15, 16:11
  #1
Medlem
negative.creeps avatar
Hej!

Jag är nyfiken på hur SL (http://reseplanerare.sl.se) går till väga när den ska beräkna resvägar vid sökning. Som jag har fattat det som används det Java för att definiera variabler (start, mål, tid, datum etc) och sedan stoppas det in i ett script som jag inte lyckats identifiera.

Så min fråga är: när SL hittat sina variabler med start, mål, tid och datum; vad händer då med dessa? Görs det beräkningar? Eller matchas det mot databaser där man redan har allt inskrivet/insparat (t.ex. hur lång tid det tar mellan start-mål vid en viss tid och veckodag).

Jag har ytterligare några frågor, men sparar det till senare!

Tack på förhand!
Citera
2011-06-17, 13:13
  #2
Bannlyst
Allt är ju en "databas". T.ex när du skriver in något på google så säker ju den upp information i en databas. Samma här, alla scheman, lokaltrafik information osv. Finns i SL reseplaneraren. Källkoden går ju alltid att kolla upp, högerklicka på sidan så så står det nåt med källkod.
Citera
2011-06-18, 15:07
  #3
Medlem
negative.creeps avatar
Tack för svaret.

Ja, märkte det efter några timmar att det var det du sa. Så följdfrågan är: går det på något sätt få tag på databaserna som SL använder i deras beräkningar?
Citera
2011-06-19, 15:59
  #4
Bannlyst
Citat:
Ursprungligen postat av negative.creep
Tack för svaret.

Ja, märkte det efter några timmar att det var det du sa. Så följdfrågan är: går det på något sätt få tag på databaserna som SL använder i deras beräkningar?
Det gör det. Ifall du då kollar källkoden så finns det där inne nånstans :P Men annars så är det ju bara att kontakta dom och fråga snällt! Får man fråga vad du ska använda det till? Eller är det bara nyfikenhet?

Annars så kan man ju högerklicka på själva "reseplaneraren" så står det nåt med "Se källkoden där du markerar" ifall du fattar.
Citera
2011-06-20, 06:52
  #5
Medlem
negative.creeps avatar
Tack för svaret igen!

Anledningen för varför jag undrar allt detta är enbart p.g.a. nyfikenhet.

Har kikat runt lite men förstår inte hur det hela är uppbyggt. Använde "developer tools" som är inbyggt i Google Chrome och kollade runt i alla .js-filer, men hittade inget som syftade på att hämta information någonstans. Istället hittade jag diverse koder för hur kartan skall fungera (man kan pricka in koordinater från en karta så hittar den närmsta hållplats..) och koder om förslag om hållplats när man skriver in en adress/fel hållplats etc..

Vore guld ifall du kunde hjälpa mig hitta runt i denna djungel!
Citera
2011-06-20, 07:04
  #6
Medlem
bzeros avatar
Källkoden ligger ju givetvis backend och är förmodligen omöjlig att hitta om de nu inte skulle få för sig att lämna ut den till dig, föga troligt .
Citera
2011-06-20, 09:04
  #7
Medlem
Fundamentalists avatar
Kan ju annars kolla om de har något API man kan jobba med. Tror dock inte att de har det, SJ har ju faktiskt inte något.
Citera
2011-06-20, 14:25
  #8
Medlem
Det är ett vanligt formulär med AJAX-funktionalitet.

Enkelt förklarat kan man säga så att när du tryckt in några bokstäver så görs ett anrop till servern i bakgrunden via Javascript. Resultatet körs sedan ut i rutan nedanför. Mycket vanligt med sån här funktionalitet och det är ganska smidigt då man slipper ladda om hela sidan.

Kör du med web developer toolkit så kan du enkelt se hur anropen till servern skickas så fort man börjar skriva något. Vid såna här funktioner är det dock viktigt att man inte anropar servern för snabbt (t ex direkt när man trycker in en bokstav) och att man cachar resultatet så alla anrop inte innebär att man belastar databasen.

Edit:

Så här ser AJAX-anropet ut när man skrivit in "sjö":

http://reseplanerare.sl.se/bin/ajax-...j%F6?&js=true&

Och svaret:

SLs.sls={"suggestions":[{"value":"Sandhamn (Sjögången) (Nynäshamn)","id":"A=1@O=Sandhamn (Sjögången) (Nynäshamn)@X=17935538@Y=58884711@U=74@L=301108520 @B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"17935538","ycoord":"58884711","state": "id","prodClass":"8","weight":"1282"},{"value":"To rsby Sjöväg (Värmdö)","id":"A=1@O=Torsby Sjöväg (Värmdö)@X=18488833@Y=59335304@U=74@L=300104558@B= 1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"18488833","ycoord":"59335304","state": "id","prodClass":"8","weight":"383"},{"value":"SJÖ B","id":"A=1@O=SJÖB@X=17999442@Y=59427129@U=74@L=3 00105509@B=1@p=1308552285@","type":"1","typeStr":" [Stn/Hlp]","xcoord":"17999442","ycoord":"59427129","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj öberg (Sollentuna)","id":"A=1@O=Sjöberg (Sollentuna)@X=17999442@Y=59427129@U=74@L=30010550 9@B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"17999442","ycoord":"59427129","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj öbergs centrum (Sollentuna)","id":"A=1@O=Sjöbergs centrum (Sollentuna)@X=17998615@Y=59430734@U=74@L=30010550 5@B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"17998615","ycoord":"59430734","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj ögången (Nynäshamn)","id":"A=1@O=Sjögången (Nynäshamn)@X=17935538@Y=58884711@U=74@L=300108520 @B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"17935538","ycoord":"58884711","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj öhistoriska museet (Stockholm)","id":"A=1@O=Sjöhistoriska museet (Stockholm)@X=18115232@Y=59333497@U=74@L=300101413 @B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"18115232","ycoord":"59333497","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj ömansplan (Södertälje)","id":"A=1@O=Sjömansplan (Södertälje)@X=17645753@Y=59181589@U=74@L=30010756 6@B=1@p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"17645753","ycoord":"59181589","state": "id","prodClass":"8","weight":"1282"},{"value":"SJ ÖN","id":"A=1@O=SJÖN@X=17935538@Y=58884711@U=74@L= 300108520@B=1@p=1308552285@","type":"1","typeStr": "[Stn/Hlp]","xcoord":"17935538","ycoord":"58884711","state": "id","prodClass":"8","weight":"1282"},{"value":"Sj östugan (Nacka)","id":"A=1@O=Sjöstugan (Nacka)@X=18266431@Y=59307842@U=74@L=300104117@B=1 @p=1308552285@","type":"1","typeStr":"[Stn/Hlp]","xcoord":"18266431","ycoord":"59307842","state": "id","prodClass":"8","weight":"1282"}]};SLs.showSuggestion();

Ser ut som JSON som sedan Javascriptet renderar ut till HTML.
__________________
Senast redigerad av Kalmar2004 2011-06-20 kl. 14:30.
Citera
2011-06-20, 15:22
  #9
Medlem
Det som sker med Javascript/Ajax är inte särskilt relevant. Det innebär ett förbättrat GUI men själva sökningen sker på serversidan och du kan inte få fram den källkoden.
Citera
2011-06-20, 16:26
  #10
Medlem
Fundamentalists avatar
Det som Kalmar2004 får ut genom anropet är inte tågtider utan förslag på orter som har något med "sjö" att göra, typ sjö i namnet. Det sker inget ajax-anrop när man får ut tågtiderna, sidan laddas ju om när man trycker på "åka nu" eller "senare".
Citera
2011-06-20, 20:45
  #11
Medlem
The Barrs avatar
Som det togs upp i en annan tråd för att tag sedan så använder sl med största sannolikhet en shortest path-algoritm som räknar ut den mest effektiva vägen att åka. Dijkstras är ett exempel på en sådan algoritm. Denna finns i så fall garanterat serverside och är inget du kommer att kunna plocka hem genom att titta i källkoden för htmlsidan.

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in