2008-11-24 9 views
7

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?¿Hay alguna manera de obtener la ubicación de los usuarios sin que el usuario instale Google Gears?

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

+0

Esto siempre ha tenido los mejores resultados para mí: http://united-coders.com/christian-harms/free-ip-location-script –

+0

Puede hacer una llamada a un tercero API como la mía, https://ipdata.co – Jonathan

Respuesta

9

Esto se suele llamar Geolocalización de IP.

Un ejemplo es here.

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"; 
    } 
} 
5

Una cosa a tener en cuenta con un servicio de geolocalización o la biblioteca es que nunca será del 100% exacto. Usamos uno, IP2Location, y en realidad ha sido una fuente constante de quejas a 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 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.

10

Google proporciona una forma de obtener la ubicación del usuario a través de AJAX API loader. Esto incluso funcionará sin Gears instalado. Sólo tiene que incluir una etiqueta de script que apunta a la jsapi:

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

Cuando una aplicación hace uso del cargador de API AJAX, el cargador intenta localizar geográficamente el cliente en base a 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 google.loader.objeto ClientLocation se rellena con las siguientes propiedades de granularidad a nivel de metro:

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

Para mi sitio web he analizado que la tasa de éxito es del 54%. Esto no es muy impresionante :( – Varun

1

Si los usuarios están en el móvil , Xitfy es también 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.

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

3

Puede utilizar HTML5 para este propósito. Eso es bastante simple. Here es un ejemplo.

1

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; 
} 
Cuestiones relacionadas