html5 - origins - javascript google maps geolocation
HTML 5 Indicación de ubicación geográfica en Chrome (8)
Empezando a entrar en HTML 5 y probando la ubicación geográfica ... me gusta hasta ahora. Sin embargo, estoy teniendo un pequeño bache de velocidad ... cuando trato de obtener mi ubicación geográfica, Chrome bloquea automáticamente que la página no tenga mi ubicación. Esto no sucede en otros sitios, como el siguiente:
Los guiones que estoy usando:
<script type="text/javascript" JavaScript" SRC="geo.js"></script>
<script type="text/javascript" JavaScript" SRC="Utility.js"></script>
<script type="text/javascript" JavaScript" SRC="jquery.js"></script>
<script type="text/javascript" JavaScript" SRC="modernizr.js"></script>
function get_location() {
if (geo_position_js.init()) {
geo_position_js.getCurrentPosition(show_map, handle_error);
}
}
function show_map(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
alert("lat:" + latitude + " long:" + longitude);
}
function handle_error(err) {
alert(err.code);
if (err.code == 1) {
// user said no!
}
}
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(show_map, handle_error);
} else {
error(''not supported'');
}
Estoy probando esto desde un directorio local en mi máquina, así que no hay realmente un "dominio" como "http://whatever.com/mytestpage.html". ¿Es por eso que no me preguntan? Si es así, ¿es posible forzar a la nave de búsqueda a solicitar permiso para obtener la ubicación geográfica del usuario y es posible en mi escenario?
Asegúrate de que no esté bloqueado en tu configuración
http://www.howtogeek.com/howto/16404/how-to-disable-the-new-geolocation-feature-in-google-chrome/
Como ya se mencionó en la respuesta de robertc, Chrome bloquea ciertas funciones, como la ubicación geográfica con archivos locales. Una alternativa más fácil a la configuración de un servidor web propio sería simplemente iniciar Chrome con el parámetro --allow-file-access-from-files
. Luego puede usar la ubicación geográfica, siempre que no la haya desactivado en su configuración.
Existe algún tipo de restricción de seguridad en Chrome para usar la geolocalización desde un file:///
URI, aunque desafortunadamente no parece registrar ningún error para indicarlo. Funcionará desde un servidor web local. Si tiene Python instalado intente abrir un símbolo del sistema en el directorio donde están sus archivos de prueba y emitir el comando:
python -m SimpleHTTPServer
Debería iniciar un servidor web en el puerto 8000 (podría ser otra cosa, pero le indicará en la consola en qué puerto está escuchando), luego vaya a http://localhost:8000/mytestpage.html
Si no tiene Python, hay módulos equivalentes en Ruby, o Visual Web Developer Express viene con un servidor web local incorporado.
Ninguno de los anteriores me ayudó.
Después de investigar un poco, descubrí que, a partir de M50 (abril de 2016), Chrome ahora requiere un origen seguro (como HTTPS) para la geolocalización .
Características desaprobadas en orígenes inseguros
El host "localhost" es especial b / c es "potencialmente seguro". Es posible que no vea errores durante el desarrollo si se está implementando en su máquina de desarrollo.
Para una solución fácil, solo copie el archivo HTML en algún recurso compartido en la nube, como Dropbox, y use el enlace compartido en su navegador. Fácil.
Yo también tuve este problema cuando estaba probando la API de Gelocation. Luego inicié IIS Express a través de Visual Studio y luego accedí a la página y funcionó sin problemas en todos los navegadores.
si está alojado detrás de un servidor y aún enfrenta problemas: intente cambiar el localhost a 127.0.0.1, por ejemplo, http://localhost:8080/ a http://127.0.0.1:8080/
El problema al que me enfrentaba era que estaba sirviendo un sitio usando apache tomcat dentro de un eclipse IDE (eclipse luna).
Para mi control de cordura, estaba usando la demostración de Remy Sharp: https://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html
y estaba recibiendo el error después de hacer ajustes menores a la función de error a pesar de alojar el código en el servidor (solo funcionaba en Firefox y fallaba en Chrome y Safari):
"Usuario denegado Geolocalización"
Hice el siguiente cambio para obtener un mensaje de error más detallado:
function error(msg) {
var s = document.querySelector(''#status'');
msg = msg.message ? msg.message : msg; //add this line
s.innerHTML = typeof msg == ''string'' ? msg : "failed";
s.className = ''fail'';
// console.log(arguments);
}
falla en Internet Explorer detrás de la aplicación virtual IE10 en http://10.0.2.2:8080 :
"La ubicación actual no se puede determinar"