API de géolocalisation

Comment géolocalisé un visiteur ? De nombreuses APIs existent pour cela. Nous allons en présenter plusieurs sur un projet GitHub.

Utiliser une API de géolocalisation

Vous pouvez tester différentes API depuis le script disponible sur GitHub (en pied de page de cette article).

Voici un exemple :

<script>
    $.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
        let geo = JSON.stringify(data, null, 2)
        $.each(data, function(i, field) {
            if (i == "geoplugin_regionName") {
                console.log( "Région: " + field );
            }
        })
        console.log(geo);
    });
</script>

Ainsi vous allez pouvoir rapidement tester, et vous faire votre propre opinion sur les résultats indiqués par ces APIs.

Comment cela fonctionne

1er Etape :
Récupérer le script

2ème Etape :
Ouvrir l’url du projet, puis cliquez sur la solution qui vous intéresse.

3ème Etape :
Visualiser le résultat dans la console de votre navigateur.

Exemple de retour :
Ville, CP, département, pays, longitude, latitude, timezone, devise, etc …

API Géolocalisation

<html>
<head>
    <meta charset="UTF-8">
    <title>Geo localisation</title>
</head>
<body>
    <h1>Geo localisation</h1>
    <ul>
        <li><a href="?type=geoplugin">geoplugin</a> http://www.geoplugin.net/json.gp</li>
        <li><a href="?type=geobytes">geobytes</a> http://gd.geobytes.com/GetCityDetails</li>
        <li><a href="?type=geoiplookup">geoiplookup</a> https://json.geoiplookup.io/api</li>
        <li><a href="?type=ipapi">ipapi</a> https://ipapi.co/json/</li>
        <li><a href="?type=ip-api">ip-api</a> http://ip-api.com/json</li>
        <li><a href="?type=ipdata">ipdata</a> https://api.ipdata.com (HS)</li>        
        <li><a href="?type=ipfind">ipfind</a> https://ipfind.co/me?auth=< your api key > (need KEY API)</li>
        <li><a href="?type=ipgeolocation">ipgeolocation</a> https://api.ipgeolocation.io/ipgeo?apiKey=< your api key > (need KEY API)</li>
        <li><a href="?type=ipify">ipify</a> https://api.ipify.org/?format=json</li>
        <li><a href="?type=ipinfodb">ipinfodb</a> https://api.ipinfodb.com/v3/ip-city/?key=< your api key >&format=json (need KEY API)</li>
        <li><a href="?type=ipinfo">ipinfo</a> https://ipinfo.io/json</li>
        <li><a href="?type=ipregistry">ipregistry</a> https://api.ipregistry.co/?key=< your api key > (need KEY API)</li>
        <li><a href="?type=ipstack">ipstack</a> http://api.ipstack.com/< ip address >?access_key=< your api key > (need KEY API)</li>
        <li><a href="?type=jsonip">jsonip</a> https://jsonip.com</li>
        <li><a href="?type=jsontest">json test</a> http://ip.jsontest.com/</li>
        <li><a href="?type=nekudo">nekudo</a> https://geoip.nekudo.com/api</li>
        <li><a href="?type=smartip">smartip</a> https://api.smartip.io/?api_key=< your api key ></li>
    </ul>
    <p>
        NB : check result in console.
    </p>
    
    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    
    <?php if (htmlentities($_GET['type']) == "geoplugin") { ?>
        <script>
            $.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                $.each(data, function(i, field) {
                    if (i == "geoplugin_regionName") {
                        console.log( "Région: " + field );
                    }
                })
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "geobytes") { ?>
        <script>
            $.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                $.each(data, function(i, field) {
                    if (i == "geobytesregion") {
                        console.log( "Région: " + field );
                    }
                })
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "geoiplookup") { ?>
        <script>
            $.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                $.each(data, function(i, field) {
                    if (i == "region") {
                        console.log( "Région: " + field );
                    }
                })
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "ipapi") { ?>
        <script>
            $.getJSON('https://ipapi.co/json/', function(data) {
                let geo = JSON.stringify(data, null, 2)
                $.each(data, function(i, field) {
                    if (i == "region") {
                        console.log( "Région: " + field );
                    }
                })
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "ip-api") { ?>
        <script>
            $.getJSON('http://ip-api.com/json?callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                $.each(data, function(i, field) {
                    if (i == "regionName") {
                        console.log( "Région: " + field );
                    }
                })
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "ipdata") { ?>
        <script>
            $.getJSON('https://api.ipdata.co', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "ipfind") { ?>
        <script>
            let key_api_ipfind = ""
            $.getJSON('https://ipfind.co/me?auth=' + key_api_ipfind, function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "ipgeolocation") { ?>
        <script>
            let key_api_ipfind = ""
            $.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=' + key_api_ipfind, function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "ipify") { ?>
        <script>
            $.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "ipinfodb") { ?>
        <script>
            let key_api_ipfind = ""
            $.getJSON('https://api.ipinfodb.com/v3/ip-city/?key='+key_api_ipfind+'&format=json&callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "ipinfo") { ?>
        <script>
            $.getJSON('https://ipinfo.io/json', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>
    
    <?php } elseif (htmlentities($_GET['type']) == "ipregistry") { ?>
        <script>
            let key_api_ipfind = ""
            $.getJSON('https://api.ipregistry.co/?key=' + key_api_ipfind, function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "ipstack") { ?>
        <script>
            let ip_address = ""
            let key_api_ipfind = ""
            $.getJSON('http://api.ipstack.com/'+ip_address+'?access_key=' + key_api_ipfind, function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "jsonip") { ?>
        <script>
            $.getJSON('https://jsonip.com/?callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "jsontest") { ?>
        <script>
            $.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "nekudo") { ?>
        <script>
            $.getJSON('https://geoip.nekudo.com/api', function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } elseif (htmlentities($_GET['type']) == "smartip") { ?>
        <script>
            let key_api_ipfind = ""
            $.getJSON('https://api.smartip.io/?api_key=' + key_api_ipfind, function(data) {
                let geo = JSON.stringify(data, null, 2)
                console.log(geo);
            });
        </script>

    <?php } ?>
</body>
</html>

Source : https://github.com/eewee/geolocalisation

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...