WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   GPS-positionering (https://www.wn.se/forum/showthread.php?t=38616)

iceman345 2009-08-20 13:31

Jag har nyligen köpt en 3G-router med stöd för USB-GPS. Routern kan skicka upp en fil innehållandes GPRMC sentences via ftp till valfri server. Jag skulle nu vilja få tag i ett javascript som gör att jag kan bädda in Google maps på min webbplats för att på så vis få positionering i realtid.

Jag kör för närvarande positioneringen (www.nightrider.se/mofcam2.html) via en programvara på PC som skickar position 1 gång/min när den är igång och det fungerar bra, men jag vill slippa ha datorn igång med allt vad det innebär och köpte bl.a. därför ny router.

Någon som har något tips på vart jag kan hitta ett script som använder en GPRMC-fil och Google maps?
API har jag redan skapat hos Google maps och allt är confat i routern, nu saknar jag bara ett script.

Jag ser fler användningsområde för detta på jobbet ifall det visar sig fungera bra, men först vill man ju testa lite :)

objx 2009-08-20 14:20

Det där låter ju helspännande!

Som jag förstår det så är innehållet i GPRMC-filer rätt enkla att utläsa.
Läser från dessa sidor:
http://www.codepedia.com/1/The+GPRMC+Sentence
http://aprs.gids.nl/nmea/#rmc

Egentligen behöver ju du bara använda valfritt språk (PHP/ASP) för att läsa av filerna som laddats upp till FTP'n och plocka ut den senaste inlagda raden för att få koordinaterna.

Vill du kunna backa i historiken så kan du ju istället lägga in koordinaterna i en databas med datumstämpeln som anger när du befann dig på dessa koordinater.


I den andra länken så visas en platsangivelse ur en GPRMC-fil på följande sätt:

$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,1 91194,020.3,E*68

En kommaseparerad sträng med följande betydelser:

1 220516 Time Stamp
2 A validity - A-ok, V-invalid
3 5133.82 current Latitude
4 N North/South
5 00042.24 current Longitude
6 W East/West
7 173.8 Speed in knots
8 231.8 True course
9 130694 Date Stamp
10 004.2 Variation
11 W East/West
12 *70 checksum


I PHP skulle du då kunna få ut uppgifterna på följande sätt:

<?php

$string = '$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7, 191194,020.3,E*68';
$parts = explode(",",$string);

$latitud = $parts[3];
$longitud = $parts[5];

$tidpunkt = substr($parts[1],0,2).":".substr($parts[1],2,2).":".substr($parts[2],4,2);

$dag = substr($parts[9],0,2);
$manad = substr($parts[9],2,2);
$ar = substr($parts[9],4,2);

$tid_timmar = substr($parts[1],0,2);
$tid_minuter = substr($parts[1],2,2);
$tid_sekunder = substr($parts[1],4,2);

$timestamp = mktime($tid_timmar,$tid_minuter,$tid_sekunder,$man ad,$dag,$ar);

$v_dir = $parts[4];
$h_dir = $parts[6];


print date("Y-m-d, H:i:s",$timestamp)." befann jag mig på longitud ".$longitud." och latitud ".$latitud." och färdades i ".$v_dir.$h_dir." riktining.";

?>

iceman345 2009-08-20 16:25

Text i all ära, men jag vill nog presentera det hela i kartform på min webbplats ungefär som det ser ut idag (se länk ovan).
Om du kollar så ser du även att jag har historik i dagsläget (grönt streck).
Måste ju finnas något bra sätt att trycka in det här i Google maps och sedan bädda in det på egen webbplats?

Anders Ekström 2009-08-20 16:45

Är det en Dovado UMR du har?

objx 2009-08-20 21:28

Citat:

Originally posted by iceman345@Aug 20 2009, 16:25
Text i all ära, men jag vill nog presentera det hela i kartform på min webbplats ungefär som det ser ut idag (se länk ovan).
Om du kollar så ser du även att jag har historik i dagsläget (grönt streck).
Måste ju finnas något bra sätt att trycka in det här i Google maps och sedan bädda in det på egen webbplats?

Ja, jag menade inte att du skulle skriva ut koordinaterna i text.
Jag ville bara visa hur enkelt det är att plocka ut koordinaterna ur din GPRMC-fil för att sedan mata in dessa i Google Maps.

En förlängning på min kod skulle kunna se ut så här:

<html>
<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp ;key=DIN_API_NYCKEL" type="text/javascript"></script>
</head>
<body>
<div id="min_karta" style="width:500px;height:400px;"></div>
<?php

$string = '$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7, 191194,020.3,E*68';
$parts = explode(",",$string);

$latitud = $parts[3];
$longitud = $parts[5];

$tidpunkt = substr($parts[1],0,2).":".substr($parts[1],2,2).":".substr($parts[2],4,2);

$dag = substr($parts[9],0,2);
$manad = substr($parts[9],2,2);
$ar = substr($parts[9],4,2);

$tid_timmar = substr($parts[1],0,2);
$tid_minuter = substr($parts[1],2,2);
$tid_sekunder = substr($parts[1],4,2);

$timestamp = mktime($tid_timmar,$tid_minuter,$tid_sekunder,$man ad,$dag,$ar);

?>

<script type="text/javascript">
window.onload = function(){

var map = new GMap2(document.getElementById("min_karta"));

var coords = new GLatLng(<? print $latitud;?>,<? print $longitud;?>);
map.setCenter(coords);
marker = new GMarker(coords);
map.addOverlay(marker);

}
</script>
</body>
</html>

Jag såg dock att koordinaterna i GPRMC-filerna hade placerat kommatecknet lite galet.
Läs mer om det här:
http://groups.google.com/group/Googl...fa1c381e?pli=1

objx 2009-08-20 21:39

Man skulle kunna montera en sån där router på en gömd plats i bilen som hela tiden laddar upp bilens position till en FTP.

Så fort bilen blir stulen kontaktar man Polisen och uppger exakt longitud och latitud där bilen befinner sig för tillfället. :)

iceman345 2009-08-20 22:00

Ja, det är en Dovado UMR, en trevlig liten låda måste jag säga. Har inte hunnit köra några längre tester ännu, men än så länge verkar allt funka...
Det är bara realtidspositioneringen jag vill ha igång oxå..

iceman345 2009-08-20 22:12

objx: Nu börjar det likna något!!! :)
Har nu haft routern igång ett tag och den skapar filer efterhand, nya filnamn baserat på tid och datum (t.ex: D0016A61055C6_20090820_174409.LOG). Dessa filer innehåller 15 positioner för de senaste 15 minutrarna.
Ex:
$GPRMC,173110.000,A,5559.2721,N,01359.2378,E,0.49, 98.44,200809,,*33
$GPRMC,173210.000,A,5559.2739,N,01359.2153,E,3.46, 242.42,200809,,*0D

Det skapas även en annan typ av fil där filnamnen börjar på "D", t.ex: T0016A61055C6_20090820_174409.LOG, innehållet i dessa filerna ser t.ex ut så här:
173110.000;200809;55.9879;13.9873
173210.000;200809;55.9879;13.9869

Vad denna andra fil har för nytta vet jag inte - är inte så insatt i formatet ännu.

Hur skall jag göra för att scriptet skall använda sig av samtliga (eller t.ex. de senaste 24 filerna (6 timmar) i en mapp?

objx 2009-08-21 11:07

Citat:

Originally posted by iceman345@Aug 20 2009, 22:12

Hur skall jag göra för att scriptet skall använda sig av samtliga (eller t.ex. de senaste 24 filerna (6 timmar) i en mapp?

Det är inte heller särskilt svårt om du använder PHP.
Här finns en snabb tutorial:
http://www.tizag.com/phpT/fileread.php

Jag kan hjälpa dig att sätta ihop systemet mot en slant om du känner att det är värt det. Hör av dig i såna fall!

iceman345 2009-08-28 16:33

Tackar för hjälpen så länge, jag tror det ordnar sig!
Jag får väl hojta till när det är klart - om någon har några tips under tiden så är ni såklart välkomna med dem :)


Alla tider är GMT +2. Klockan är nu 01:55.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson