Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Geolokalizacja po wyrażeniu zgody
casperii
post 25.07.2017, 17:32:29
Post #1





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
Pyton_000
post 25.07.2017, 18:03:19
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


https://www.w3schools.com/html/html5_geolocation.asp
Go to the top of the page
+Quote Post
casperii
post 29.07.2017, 12:00:32
Post #3





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował casperii 25.07.2017, 21:47:14
Go to the top of the page
+Quote Post
nospor
post 30.07.2017, 16:06:31
Post #4





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
casperii
post 30.07.2017, 17:50:44
Post #5





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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.

Ten post edytował casperii 30.07.2017, 17:53:13
Go to the top of the page
+Quote Post
viking
post 30.07.2017, 17:56:26
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Kliknąłeś "nie zezwalam na dostęp"?


--------------------
Go to the top of the page
+Quote Post
casperii
post 30.07.2017, 20:57:39
Post #7





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 30.07.2017, 21:00:58
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://developers.google.com/web/updates/2...e-contexts-only


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 22:52