2013-07-02 8 views
8

Hinweis: Die ursprüngliche Quelle für die HTML-unten angegebenen kamen aus http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_map und Google Maps Javascript V3 geolocation - cannot access initialLocation variable unless alertedGoogle Maps Javascript GeoLocation - Nicht auf Chrome arbeiten

ich drei verschiedene Versionen von Geolokalisierung Beispiele gesammelt haben. Alle funktionieren ordnungsgemäß in Firefox. Keine funktionieren in Chrome. Ich habe die Chrome-Berechtigung festgelegt, damit alle Websites meinen Standort verwenden können, aber immer noch keinen Erfolg. Es muss eine Chrome-Einstellung sein, aber nicht die offensichtliche: Einstellungen/Erweiterte Einstellungen anzeigen/Datenschutz/Inhaltseinstellungen/Standort/Allen Websites erlauben, meinen physischen Standort zu verfolgen.

In Firefox sehe ich meinen aktuellen Standort, nachdem aufgefordert, Standort zu teilen.

In Chrome bekomme ich Benutzer abgelehnt die Anfrage für Geolocation oder Fehler: Der Geolocation-Dienst schlug je nach dem HTML.

Vorausgesetzt, dass funktioniert in Firefox und nicht Chrome Ich denke, es muss eine Chrome-Einstellung sein, aber ich weiß einfach nicht, was ich tun kann, ist permissiver als alle Websites erlauben, meinen physischen Standort zu verfolgen.

Hier sind die drei HTML5-Dateien:

geoGoogle.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Geolocation</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <link href="https://google-developers.appspot.com/maps/documentation/javascript/examples/default.css" rel="stylesheet"> 
    <!-- 
    Include the maps javascript with sensor=true because this code is using a 
    sensor (a GPS locator) to determine the user's location. 
    See: https://developers.google.com/apis/maps/documentation/javascript/basics#SpecifyingSensor 
    --> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script> 

    <script> 
var map; 

function initialize() { 
var mapOptions = { 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

// Try HTML5 geolocation 
if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); 
      map.setCenter(initialLocation); 
      var infowindow = new google.maps.InfoWindow({ 
      map: map, 
      position: initialLocation , 
      content: 'Location found using W3C standard' 
      }); 
      var marker = new google.maps.Marker({ 
      position: initialLocation, 
      map: map 
      }); 
     }, function() { 
      handleNoGeolocation(true); 
     }); 
} else { 
    // Browser doesn't support Geolocation 
    handleNoGeolocation(false); 
} 
} 

function handleNoGeolocation(errorFlag) { 
if (errorFlag) { 
    var content = 'Error: The Geolocation service failed.'; 
} else { 
    var content = 'Error: Your browser doesn\'t support geolocation.'; 
} 

var options = { 
    map: map, 
    position: new google.maps.LatLng(60, 105), 
    content: content 
}; 

var infowindow = new google.maps.InfoWindow(options); 
map.setCenter(options.position); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

    </script> 
</head> 
<body> 
    <div id="map-canvas"></div> 
</body> 
</html> 

geoGoogle2.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Geolocation</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <link href="https://google-developers.appspot.com/maps/documentation/javascript/examples/default.css" rel="stylesheet"> 
    <!-- 
    Include the maps javascript with sensor=true because this code is using a 
    sensor (a GPS locator) to determine the user's location. 
    See: https://developers.google.com/apis/maps/documentation/javascript/basics#SpecifyingSensor 
    --> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script> 

    <script> 
var map; 

function initialize() { 
var mapOptions = { 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

// Try HTML5 geolocation 
if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
    var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 

    var infowindow = new google.maps.InfoWindow({ 
     map: map, 
     position: pos, 
     content: 'Location found using HTML5.' 
    }); 

    map.setCenter(pos); 
    }, function() { 
    handleNoGeolocation(true); 
    }); 
} else { 
    // Browser doesn't support Geolocation 
    handleNoGeolocation(false); 
} 
} 

function handleNoGeolocation(errorFlag) { 
if (errorFlag) { 
    var content = 'Error: The Geolocation service failed.'; 
} else { 
    var content = 'Error: Your browser doesn\'t support geolocation.'; 
} 

var options = { 
    map: map, 
    position: new google.maps.LatLng(60, 105), 
    content: content 
}; 

var infowindow = new google.maps.InfoWindow(options); 
map.setCenter(options.position); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

    </script> 
</head> 
<body> 
    <div id="map-canvas"></div> 
</body> 
</html> 

geoGoogle3.html:

<!DOCTYPE html> 
<html> 
<body> 
<p id="demo">Click the button to get your position:</p> 
<button onclick="getLocation()">Try It</button> 
<div id="mapholder"></div> 
<script> 
var x=document.getElementById("demo"); 
function getLocation() 
    { 
    if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(showPosition,showError); 
    } 
    else{x.innerHTML="Geolocation is not supported by this browser.";} 
    } 

function showPosition(position) 
    { 
    var latlon=position.coords.latitude+","+position.coords.longitude; 

    var img_url="http://maps.googleapis.com/maps/api/staticmap?center=" 
    +latlon+"&zoom=14&size=400x300&sensor=false"; 
    document.getElementById("mapholder").innerHTML="<img src='"+img_url+"'>"; 
    } 

function showError(error) 
    { 
    switch(error.code) 
    { 
    case error.PERMISSION_DENIED: 
     x.innerHTML="User denied the request for Geolocation." 
     break; 
    case error.POSITION_UNAVAILABLE: 
     x.innerHTML="Location information is unavailable." 
     break; 
    case error.TIMEOUT: 
     x.innerHTML="The request to get user location timed out." 
     break; 
    case error.UNKNOWN_ERROR: 
     x.innerHTML="An unknown error occurred." 
     break; 
    } 
    } 
</script> 
</body> 
</html> 

Dank

+1

möglich Duplikat arbeiten [W3C Geolocation API nicht in Chrome arbeiten] (http://stackoverflow.com/questions/6181379/w3c-geolocation-api-not-working-in-chrome) –

+0

Ja, es ist ein Duplikat. Ich benutzte file: /// ... Danke David. Übrigens, da es neben Ihrer Antwort kein grünes Häkchen gibt, was soll ich tun? Soll ich die Frage löschen? – user825628

+0

Nein, lass es stehen. Ihr Code wird wahrscheinlich jemandem auf der Straße helfen. Wenn die Gemeinde denkt, dass es unnötig ist, wird es erledigt. –

Antwort

8

Chrome und Safari (Webkit-Browser) erlauben keine Geolocation-API für Dateien im Dateisystem.

nur eine Web-Anwendung erstellen und versuchen, es wie

mit localhost für den Zugriff auf
http://localhost/geoGoogle.html 
+0

immer noch nicht in der Lage, es in Safari zu bekommen 5.1.7 – saikiran

0

verwendet nur HTTPS statt HTTP und es wird

Verwandte Themen