Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Geolokalizacja po wyrażeniu zgody
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie zastanawiam się na jakiej zasadzie działa geolokalizacja np jak ma pogoda onet:
gdy wyrazimy zgodę strona pobiera nasze położenie geograficzne. Na co takiego wyrażamy zgodę i co przesyłamy, że (nie wiem jak w innych przypadkach) onet z dokładnością podaje moje położenie, bo samo IP chyba nie wchodzi w grę. Czy znacie jakieś tutki do wykorzystania ?
casperii
Dzięki @Pyton_000 , spójrz proszę w kod:

  1. <!DOCTYPE html>
  2. <title>Skąd jesteś</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
  5. <script type="text/javascript">
  6. var x=document.getElementById("mapp");
  7. function getLocation(){
  8. if (navigator.geolocation){
  9. navigator.geolocation.getCurrentPosition(showPosition,showError);
  10. }else{
  11. x.innerHTML="Geolocation is not supported by this browser.";
  12. }
  13. }
  14.  
  15. function showPosition(position){
  16. lat=position.coords.latitude;
  17. lon=position.coords.longitude;
  18. latlon=new google.maps.LatLng(lat, lon)
  19. display=document.getElementById('display')
  20. display.style.height='250px';
  21. display.style.width='525px';
  22. var myOptions={
  23. center:latlon,zoom:14,
  24. mapTypeId:google.maps.MapTypeId.ROADMAP,
  25. mapTypeControl:false,
  26. navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
  27. };
  28.  
  29. var map=new google.maps.Map(document.getElementById("display"),myOptions);
  30. var marker=new google.maps.Marker({position:latlon,map:map,title:"Tutaj jesteś"});
  31.  
  32. document.getElementById('display2').innerHTML = "Latitude:" + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;
  33.  
  34. }
  35.  
  36. function showError(error){
  37. switch(error.code){
  38. case error.PERMISSION_DENIED:
  39. x.innerHTML= "User denied the request for Geolocation.";
  40. break;
  41.  
  42. case error.POSITION_UNAVAILABLE:
  43. x.innerHTML="Location information is unavailable.";
  44. break;
  45.  
  46. case error.TIMEOUT:
  47. x.innerHTML="The request to get user location timed out.";
  48. break;
  49.  
  50. case error.UNKNOWN_ERROR:
  51. x.innerHTML="An unknown error occurred.";
  52. break;
  53. }
  54. }
  55. </head>
  56. <body>
  57. <p id="mapp"><button onclick="getLocation()">DEMO</button></p>
  58. <div id="display"></div>
  59. <div id="display2"></div>
  60. </body>
  61. </html>


O ile w przeglądarce FF działa , tak w chrome wywala błąd:
Uncaught TypeError: Cannot set property 'innerHTML' of null
x.innerHTML= "User denied the request for Geolocation.";

o co chrome się pluje?
Po 2. czy jest możliwość by bez wiedzy usera pobierać tą geolokalizację? Tzn bez klikania w zgodę? Ewentualnie podpięcie pod okienko z informacją o ciasteczkach na stronie smile.gif

Ktoś pomoże ?
nospor
ten kod
var x=document.getElementById("mapp");
odpalasz teraz na samym poczatku sekcji head gdzie element "mapp" jeszcze nie istnieje wiec skoro nie istniej to x ma null.... Takie rzeczy odpala sie dopiero jak sie html zaladuje
casperii
Słuszna uwaga @nospor.
Poprawiłem, tylko pytanie, czemu na localhost działa a na serwerze otrzymuje komunikat:
User denied the request for Geolocation. - ten problem tylko w chrome jest.
viking
Kliknąłeś "nie zezwalam na dostęp"?
casperii
Mimo kliknięcia zezwalam na dostęp mam taki komunikat, nawet jak w Chrome ustawie że zezwalaj dla tej witryny to też nie bierze tego pod uwagę.
Problem jest tylko w Chrome, pod FF działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.