Geolokalizacja po IP

Co używacie do lokalizacji po IP na terenie Polski?
sprawdzałem google, microsoft Bing, maxmind Lite raczej ze słabymi rezultatami.

Sprawdz gema geocoder

Tak właśnie używam tego gema jako default lookups jest ustawione :google przy tych ustawieniach nie wykrywał mi miast w polsce.

Problemem jest to że większość ludzi używa w polsce Neostrady, a ta podaje bardzo “szerokie” namiary, w rodzaju województwo całe dostaje namiar na jego stolicę.

Skąd w takim razie serwisy takie jak ten: http://whatismyipaddress.com/ mają dokładne namiary?

Nie wiem, czy takie dokładne, mi pokazuje Toruń lub Olsztyn, a mieszkam po drugiej stronie Polski :wink:

Z perspektywy doświadczeń Polaka mieszkającego zagranicą sugeruję nieśmiało, żebyś nie używał geolokalizacji do niczego innego niż kosmetyczne usprawnienia interfejsu. Bo nie działa.

Namiary biorą z bazy danych.

W linku do strony, którą podałeś jest napisane jak to działa:

Natomiast IP z konkretnych stron jest prawdopodobnie pobierane z płatnej bazy danych jak np. MaxMind. Może być na przykład tak, że ilość reklam wyświetlnych na stronie przebija koszta wyszukiwania adresu w bazie danych i stąd strony takie mają rację bytu.

Jeśli chcesz darmowego rozwiązania, to np. ta strona http://www.geoiptool.com/ zwraca współrzędne dla IP wpisanego w URL ( http://www.geoiptool.com/en/?IP=66.249.64.144 ), więc pewnie istnieje opcja skręcenia jakiegoś prostego scrapera, wyizolowania współrzędnych z tego co zwraca zapytanie i zakodowania i w geocoder.

Po moim IP strona http://www.geoiptool.com pokazuję tylko kraj. Ma ktoś praktykę z płatną wersją bazy MaxMind na terenie Polski?

http://whatismyipaddress.com/ pokazuje mi jako adres Kraków który jest 60km dalej i szczerze mówiąc bliżej mi do Katowic więc tak jak mówię te bazy generalnie ssą. I nadają się tylko do rozpoznawania kraju tak naprawdę.

Wszystko zależy od tego co dany LIR wpisze w RIPE w polach address. Przez geolokalizacje uzyskamy raczej miejsce, gdzie właściciel danej klasy adresowej prowadzi swoją działalność niż rzeczywistą lokalizację serwera.

Mam tutaj pewien skrypt, znalazłem go na blog.kmike.net i dopracowałem:

var BotMap = {};
var message;
var options = {
    enableHighAccuracy: true,
    timeout: 10000,
    maximumAge: 0
};

function success(pos) {
    BotMap.crd = pos.coords;
    
    message = 'Twoja aktualna pozycja ' + '\n' + 'Szerokość: ';
    if (BotMap.crd.latitude > 0)
    {
        message += BotMap.crd.latitude + ' N' + '\n';
    }
    else if (BotMap.crd.latitude < 0)
    {
        message += (BotMap.crd.latitude * -1) + ' S' + '\n';
    }
    else
    {
        message += BotMap.crd.latitude + '\n';
    }
    
    message += 'Długość: ';
    if (BotMap.crd.longitude > 0)
    {
        message += BotMap.crd.longitude + ' E' + '\n';
    }
    else if (BotMap.crd.longitude < 0)
    {
        message += (BotMap.crd.longitude * -1) + ' W' + '\n';
    }
    else
    {
        message += BotMap.crd.longitude + '\n';
    }
    message += 'Dokładność: ' + BotMap.crd.accuracy + ' metrów';
    alert(message);
}
 
function error(err) {
    alert('ERROR ' + err.code + ': ' + err.message);
}
 
navigator.geolocation.getCurrentPosition(success, error, options);