Ugrás a fő tartalomra

Saját pozicio (GEO helyzet) meghatározás

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?
Nézzük meg, hogyan adhatjuk meg WEB-en ezekre a kérdésekre a választ.
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.
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.
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
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 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.
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.

Megjegyzések