2008-11-24 19 views
7

Nie chcę, aby użytkownik instalował Google Gears, aby móc pokazać mu swoją domyslaną lokalizację. Czy istnieje sposób na uzyskanie lokalizacji bez używania Google Gears?Czy istnieje sposób na uzyskanie lokalizacji użytkowników bez instalowania wtyczki Google Gears?

Znalazłem http://www.wipmania.com/de/blog/google-geolocation-api/, ale nie oferuje ono przykładu.

+0

ten zawsze miał najlepsze rezultaty dla mnie: http://united-coders.com/christian-harms/free-ip-location-script –

+0

Można nawiązać połączenie na rzecz osoby trzeciej API, takie jak moje, https://ipdata.co – Jonathan

Odpowiedz

9

Zazwyczaj nazywa się to Geolokacją IP. Jest to przykład: here.

Chodzi o to, że większość witryn (jeśli planujesz nazwać to usługą internetową) obciąży Cię za to. W przeciwnym razie połącz usługę WWW, która pobiera stronę geolokalizacji, analizuje ją pod kątem adresu i zwraca tę informację.

W PHP, to wydaje się całkiem dobrze:

<?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

Jedno trzeba uważać z usługą geolokalizacji lub biblioteki jest to, że nigdy nie będzie w 100% dokładne. Używamy jednego, IP2Location, i tak naprawdę było stałym źródłem skarg do naszego działu obsługi klienta. Szukamy sposobów, aby zmienić zachowanie strony i rozważyć czynniki, które należy całkowicie usunąć.

Problem polega na tym, że ciężarem związania IP z użytkownikiem jest z użytkownikiem ISP. Mają duże bloki zakresów IP i rejestrują, które bloki należą do określonej lokalizacji. Problem polega na tym, że dostawcy usług internetowych często nie aktualizują tych informacji, gdy przesuwają bloki lub blok obejmuje zbyt duży obszar.

Na przykład mieszkam około sześćdziesięciu mil na północ od Manhattanu, ale mój adres IP często pokazuje, że jestem w Chicago z większością narzędzi do wyszukiwania. Mam FIOS i rozmawiałem z kilkoma innymi osobami, które potwierdziły to samo zachowanie.

10

Google zapewnia sposób na uzyskanie lokalizacji użytkownika za pośrednictwem jej numeru AJAX API loader. To zadziała nawet bez zainstalowanego Gears. Po prostu zawierać tag skryptu wskazując na JSAPI:

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

Gdy aplikacja korzysta z ładowaczem API AJAX, ładowarka próbuje geo zlokalizować klienta w oparciu o jego adres IP. Jeśli ten proces się powiedzie, lokalizacja klienta, określona na poziomie metra, zostanie udostępniona we właściwości google.loader.ClientLocation. Jeśli proces nie znajdzie dopasowania, ta właściwość ma wartość NULL.

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

Po wypełnieniu, google.loader.Obiekt ClientLocation jest wypełniana z następującymi właściwościami ziarnistości metro szczebla:

  • ClientLocation.latitude - dostarcza niskiej rozdzielczości swobodę związaną z adresem IP klienta
  • ClientLocation.longitude - dostarcza niskiej rozdzielczości geograficzną powiązany z adresem IP klienta
  • ClientLocation.address.city - podaje nazwę miasta powiązanego z adresem IP klienta:
  • ClientLocation.address.country - podaje nazwę kraju powiązanego z adresem IP klienta:
  • ClientLocation.address.country_code - dostarcza nazwę ISO 3166-1 kodu kraju stowarzyszonego z adresem IP klienta
  • ClientLocation.address.region - dostarcza konkretną nazwę regionu kraju stowarzyszonego z adresem IP klienta
+0

Na mojej stronie przeanalizowałem, że wskaźnik sukcesu wynosi 54%. To nie jest imponujące :( – Varun

1

Jeśli użytkownicy są na komórkowego , Xitfy to również bezpłatna opcja. Mają małego klienta, który po wyrażeniu zgody przez użytkownika może być bezproblemowo zainstalowany na jego telefonie. Następnie możesz wywołać interfejs API oparty na REST, aby uzyskać dokładną liczbę lat/fonów z gps/wifi lub komórki.

Obsługują one Androida, Windows Mobile, BlackBerry i Symbian, który obejmuje prawie wszystkie smartfony.

3

Do tego celu można użyć HTML5. To całkiem proste. Here jest przykładem.

1

Możesz dokonać geokodowania adresu IP za pomocą tego prostego kodu. Działa świetnie. Spróbuj tego:

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