2010-01-13 10 views
8

Estoy tratando de usar google.loader.ClientLocation junto con la API de mapas para obtener la ubicación del visitante y centrar un mapa en él. Lo siguiente está funcionando bien para mí (en Safari, Firefox y Chrome), pero un amigo que tuve que probarlo (en Safari y Firefox) solo vio un cuadro blanco con el logo de Google.Obteniendo la ubicación del usuario con google.loader.ClientLocation trabajando para mí pero no en otros

<script type="text/javascript" src="http://www.google.com/jsapi?key=MykeyHere"></script> 

    <script type="text/javascript"> 
    google.load("maps", "2"); 
    </script> 

    <script type="text/javascript"> 

     function initialize() { 
     if (GBrowserIsCompatible()) { 
      var map = new GMap2(document.getElementById("local_map")); 
    map.setMapType(G_PHYSICAL_MAP); 
    map.setCenter(new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), 15); 
      // map.setCenter(new GLatLng(54.5975, -5.920278), 15); 
      map.setUIToDefault(); 

     } 

     </script> 

¿Alguna idea de lo que podría estar yendo mal? El sitio está en http://www.chris-armstrong.com/ticktalk (el mapa está cerca de la parte inferior)

Respuesta

14

Google ClientLocation utiliza la geolocalización de la dirección IP. Hay varios proveedores de geolocalización de direcciones IP (las preguntas relacionadas en la barra lateral a la derecha le darán varios de ellos) y dan diferentes resultados a diferentes usuarios. Google ClientLocation no podrá ubicar a todos y no siempre dará respuestas tan precisas o precisas como algunos competidores.

En my test page, por ejemplo, uso Google ClientLocation y IPInfoDB y Google ClientLocation no me encuentra en casa en este momento, mientras que IPInfoDB cree que estoy en Sunnyvale en lugar de Berkeley. Puede encontrar que un proveedor es mejor que los demás (especialmente si paga por su base de datos), pero sospecho que el método más sólido, si realmente lo necesita, es usar varios y esperar que al menos uno tenga un resultado . Debe saber por adelantado que la geolocalización IP no siempre funcionará para usuarios todos (los que están detrás de un proxy anónimo, por ejemplo, nunca se ubicarán de esta manera).

También, si desea una ubicación más precisa, puede utilizar una API de Javascript para solicitar al navegador la ubicación exacta del usuario. En navegadores compatibles, el usuario recibirá una pequeña ventana emergente que le pedirá permiso y, si se le proporciona, el navegador usará GPS (Mobile Safari en el iPhone, por ejemplo) o WiFi (Firefox 3.5+) para determinar la latitud y la longitud. . Puede ver cómo funciona esto en my test page y compararlo con la geolocalización de IP. No todos los navegadores admiten el W3C Geolocation API, pero un número cada vez mayor lo hace.

+0

Gracias, básicamente no es una ciencia exacta. ¿Es la dirección IP la única forma de obtener una ubicación sin funcionalidad GPS? –

+0

@Chris, exactamente, no es exacto. Puede usar la API de geolocalización Javascript W3C para obtener una ubicación más precisa desde el navegador (que puede usar una triangulación GPS o WiFi u otro método, dependiendo del navegador y la computadora). He agregado algunos enlaces a mi respuesta para proporcionar más contexto. – npdoty

+0

Obtengo 'En realidad, no puedo adivinar su ubicación de esta manera'. cuando visita su página de prueba. –

Cuestiones relacionadas