Saját pozicio (GEO helyzet) meghatározás HTML+JS segítségével
Mivel az embert nagyon érdeklik az alábbi kérdések:
Hol vagyok?
Hova szeretnék eljutni?
Merre induljak el?
Hogyan, milyen úton, mennyi idő alatt jutok el oda?
Hova szeretnék eljutni?
Merre induljak el?
Hogyan, milyen úton, mennyi idő alatt jutok el oda?
Nézzük meg, hogyan adhatjuk meg WEB-en ezekre a kérdésekre a választ.
0. HTML5 használat: http://mierdekel.hu/map2/sajat_poz/index_html5.html
A Geolocation API-k csak azt írják le, hogy a WEB böngészőknek
hogyan kell megadnunk a JavaScript-nyelven a kért pozíciós adatokat,
abban viszont eltérnek ez egyes megvalósulások,
hogy azokat milyen módon szerzik be vagy állítják elő,
pl.: GPS-vevőből, IP-címből, mobilcellák adataiból stb.
hogyan kell megadnunk a JavaScript-nyelven a kért pozíciós adatokat,
abban viszont eltérnek ez egyes megvalósulások,
hogy azokat milyen módon szerzik be vagy állítják elő,
pl.: GPS-vevőből, IP-címből, mobilcellák adataiból stb.
A JavaScript-programunkban futáskor két nevesített elemmel megnézzük,
hogy a böngésző támogatja-e a helymeghatározást:
– lekérdezi, hogy létezik-e a navigator.geolocation objektum,
– ha igen, akkor meghívja ennek az aktuális pozíciót lekérdező metódusát getCurrentPosition.
hogy a böngésző támogatja-e a helymeghatározást:
– lekérdezi, hogy létezik-e a navigator.geolocation objektum,
– ha igen, akkor meghívja ennek az aktuális pozíciót lekérdező metódusát getCurrentPosition.
Működés során a pozíció lekérdező metódusnak három paramétert adhatunk meg:
– sikeres végrehajtás esetében végrehajtandó (függvény hívás)
– hiba eseményre végrehajtandó (függvény hívás)
– a működést befolyásoló paraméter listát
– sikeres végrehajtás esetében végrehajtandó (függvény hívás)
– hiba eseményre végrehajtandó (függvény hívás)
– a működést befolyásoló paraméter listát
MINTA:
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <title>MIE HTML5 API helyzet meghatározás (poziciom)</title> <meta name="author" content="@Kecskeméti Lajos" /> </head> <body> <button onclick="getLocation()">Poziciom lekérése</button> <p id="mie_poz"></p> <script> var x = document.getElementById("mie_poz"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition, handle_errors); } else { x.innerHTML = "Geolocation nem támogatott ezen a WEB böngészön."; } } function handle_errors(error) { switch(error.code) { case error.PERMISSION_DENIED: alert(" HU:felhasználó pozicio adatmegosztás tiltva \n EN:user did not share geolocation data"); break; case error.POSITION_UNAVAILABLE: alert(" HU:a pozicio nem határozható meg \n EN:could not detect current position"); break; case error.TIMEOUT: alert(" HU:pozicio adat nem érkezik \n EN:retrieving position timed out"); break; default: alert(" HU:ismeretlen hiba \n EN:unknown error"); break; } } function showPosition(position) { x.innerHTML = '<h1>MIE HTML5 Helymeghatározás!</h1><i>Saját GPS helyzet</i><hr>'+ "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } </script> </body> </html>
1. Google (GMAP) API használat:http://mierdekel.hu/map2/sajat_poz/index_gm.html
MINTA:
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <title>MIE GMAP API helyzet meghatározás (poziciom)</title> <meta name="author" content="@Kecskeméti Lajos" /> <style> html, body { margin: 0; overflow: hidden; } html,body, #google_canvas { width:100%; height:100%; } #google_canvas h1 { font-size:16px; } #google_canvas h2 { font-size:14px; font-weight:300; } *, *:after, *:before { margin:0; padding:0; box-sizing:border-box; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; -webkit-font-smoothing:antialiased; font-smoothing:antialiased; text-rendering:optimizeLegibility; } body { font:400 13px/1.4 'Helvetica Neue', Helvetica, Arial, sans-serif; background:#333; } </style> <!-- <script type="text/javascript" src="http://www.google.com/jsapi"></script> --> <script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script> </head> <body> <div id="google_canvas"></div> <script> window.onload = function() { // (function() { if(!!navigator.geolocation) { var map; var mapOptions = { zoom: 14, center: new google.maps.LatLng(47.2397, 19.0644), mapTypeId: google.maps.MapTypeId.ROADMAP, disableDefaultUI: true, draggable: false, mapTypeControl: true, zoomControl: true, scaleControl: true, scrollwheel: false }; map = new google.maps.Map(document.getElementById('google_canvas'), mapOptions); navigator.geolocation.getCurrentPosition(function(position) { var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); map.setCenter(geolocate); //---- poziciónk cím meghatározása var cimem = 'Cím ismeretlen.'; var geocoder = new google.maps.Geocoder(); geocoder.geocode({'latLng': geolocate}, function(results, status) { if(status == google.maps.GeocoderStatus.OK) { cimem = results[0]['formatted_address']; // alert (results[0]['formatted_address']); document.getElementById("en_cimem").innerHTML = cimem; }; }); //----------- var infowindow = new google.maps.InfoWindow({ map: map, position: geolocate, content: '<h1>MIE HTML5 GMAP Helymeghatározás!</h1><i>Saját GPS helyzet</i><hr>' + '<h2>Latitude: ' + position.coords.latitude + '</h2>' + '<h2>Longitude: ' + position.coords.longitude + '</h2><hr>'+ '<div id="en_cimem" >' + cimem + '</div>' }); }); } else { document.getElementById('google_canvas').innerHTML = 'No Geolocation Support.'; } // })(); } // google.load("maps", "3.x", {other_params: "sensor=false"}); //jsapi map betöltő </script> <!-- <script src="http"></script> --> </body> </html>
2. Openlayer (OL) API használat:http://mierdekel.hu/map2/sajat_poz/index_ol.html
3. Leaflet (LL) API használat: http://mierdekel.hu/map2/sajat_poz/index_ll.html
Néhány hasznos alapfogalom:
A helymeghatározás a GPS saját vonatkozási rendszerében,
a WGS84 rendszerben történik, azonban előre beépített transzformáció
programok segítségével a felhasználó ezeket a koordinátákat más,
beépített vetületi rendszerbe transzformálhatja.
a WGS84 rendszerben történik, azonban előre beépített transzformáció
programok segítségével a felhasználó ezeket a koordinátákat más,
beépített vetületi rendszerbe transzformálhatja.
A navigációs készülékek működési elve közel azonos:
GPS-műholdakra végzett távolságméréssel és
a pont térbeli koordinátáinak kiszámításával meghatározza a felhasználó térbeli pozícióját.
GPS-műholdakra végzett távolságméréssel és
a pont térbeli koordinátáinak kiszámításával meghatározza a felhasználó térbeli pozícióját.
Az abszolút helymeghatározás pontossága mindösszesen ±10 méter vízszintes értelemben, magassági értelemben pedig ±15 méter.
A koordináta meghatározás bizonytalanságának magyarázata abban rejlik,
hogy a műholdakról kibocsátott rádiójelek nem egy homogén közegen keresztül jutnak el a vevőkig, hanem a légkörön keresztül, amely szennyezettsége és függőleges rétegzettségének eltérő tulajdonságai (pl. troposzféra, ionoszféra stb.) miatt az egyes rétegeiben különbözőképpen befolyásolja a rádiójelek terjedését,
de szerepet játszik benne a műholdak helyzetének nem pontos ismerete is.
hogy a műholdakról kibocsátott rádiójelek nem egy homogén közegen keresztül jutnak el a vevőkig, hanem a légkörön keresztül, amely szennyezettsége és függőleges rétegzettségének eltérő tulajdonságai (pl. troposzféra, ionoszféra stb.) miatt az egyes rétegeiben különbözőképpen befolyásolja a rádiójelek terjedését,
de szerepet játszik benne a műholdak helyzetének nem pontos ismerete is.
Megjegyzések
Megjegyzés küldése