viejo pro linea gratis google earth descargar google-maps geolocation google-gears

google maps - pro - ¿Hay alguna forma de obtener la ubicación de los usuarios sin que el usuario instale Google Gears?



google earth viejo (6)

No quiero que el usuario instale Google Gears para que pueda mostrarle su ubicación adivinada. ¿Hay alguna forma de obtener la ubicación sin tener que usar Google Gears?

He encontrado http://www.wipmania.com/de/blog/google-geolocation-api/ pero no ofrece un ejemplo.


Esto se suele llamar Geolocalización de IP.

Un ejemplo está aquí .

El hecho es que la mayoría de los sitios (si planea llamar esto como un servicio web) le cobrarán por ello. De lo contrario, junte un servicio web que tome una página de geolocalización, la analice en busca de la dirección y devuelva esa información.

En PHP, esto parece funcionar bastante bien:

<?php if(isset($_GET["ip"])){ echo geolocate($_GET["ip"]); } function geolocate($ip){ $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip"); if(preg_match(''/Location:(.*)/'',$raw_html,$matches)){ $location_raw = $matches[1]; //Get rid of pesky HTML tags $location = preg_replace("/<[^>]*>/","",$location_raw); return $location; }else{ return "ERROR"; } }


Google proporciona una forma de obtener la ubicación del usuario a través de su cargador de API AJAX . Esto incluso funcionará sin Gears instalado. Simplemente incluya una etiqueta de script que apunte a JsAPI:

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

Cuando una aplicación hace uso del cargador de la API AJAX, el cargador intenta ubicar geográficamente el cliente según su dirección IP. Si este proceso tiene éxito, la ubicación del cliente, con alcance al nivel de metro, estará disponible en la propiedad google.loader.ClientLocation. Si el proceso no puede encontrar una coincidencia, esta propiedad se establece en nulo.

if (google.loader.ClientLocation){ var center = new google.maps.LatLng( google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude ); map.setCenter(center); }

Cuando se rellena, el objeto google.loader.ClientLocation se rellena con las siguientes propiedades de granularidad de nivel metro:

  • ClientLocation.latitude : proporciona la latitud de baja resolución asociada a la dirección IP del cliente
  • ClientLocation.longitude : proporciona la longitud de baja resolución asociada con la dirección IP del cliente
  • ClientLocation.address.city : proporciona el nombre de la ciudad asociada con la dirección IP del cliente
  • ClientLocation.address.country : proporciona el nombre del país asociado con la dirección IP del cliente
  • ClientLocation.address.country_code : proporciona el nombre del código de país ISO 3166-1 asociado con la dirección IP del cliente
  • ClientLocation.address.region : proporciona el nombre de la región específica del país asociado con la dirección IP del cliente

Una cosa a tener en cuenta con un servicio de geolocalización o una biblioteca es que nunca serán 100% precisos. Usamos uno, IP2Location , y en realidad ha sido una fuente constante de quejas para nuestro departamento de servicio al cliente. Estamos buscando formas de alterar el comportamiento del sitio y sopesar los factores para eliminarlo por completo.

El problema radica en el hecho de que la carga de asociar la IP con un usuario es con el ISP de los usuarios. Tienen grandes bloques de rangos de IP y registran qué bloques pertenecen a una ubicación específica. El problema es que los ISP a menudo no actualizan esta información cuando cambian bloques o un bloque cubre un área demasiado grande.

Por ejemplo, vivo a unas sesenta millas al norte de Manhattan, pero mi IP a menudo muestra que estoy en Chicago con la mayoría de las herramientas de búsqueda. Tengo FIOS y he hablado con otras personas que confirmaron el mismo comportamiento.


Si sus usuarios están en el móvil, Xitfy también es una opción gratuita. Tienen un pequeño cliente que después de que el usuario acepte puede instalarse sin problemas en su teléfono. A continuación, puede llamar a una API basada en REST para obtener su latitud / longitud exacta obtenida de gps / wifi o torre de telefonía celular.

Son compatibles con Android, Windows Mobile, BlackBerry y Symbian, que cubren casi todos los teléfonos inteligentes.


Puede usar HTML5 para este propósito. Eso es bastante simple. Aquí hay un ejemplo.


Puede geocodificar la dirección IP utilizando este código simple. Funciona muy bien. Prueba esto:

function functionname(Your IP Here) { $ip = $ClientIP; $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); $json = json_decode($json,true); return $json; }