geotool-detector

Geotool - geo-location detector

Usage no npm install needed!

<script type="module">
  import geotoolDetector from 'https://cdn.skypack.dev/geotool-detector';
</script>

README

geotool-detector

Installation

Browserify

Install geotool-detector module:

$ npm install --save geotool-detector

Declare detector class:

var Detector = require('geotool-detector');

In browser

<script src="dist/js/geotool-detector.js" charset="utf-8"></script>

Declare detector class:

var Detector = geotool.Detector;

Detect Geo-location


// create detector instance
var detector = new Detector({
    geoCoders: [{
        url: 'https://nominatim.openstreetmap.org/reverse',
        buildParameters: function(data) {
            return {
                format: 'json',
                lat: data.lat, lon: data.lng,
                zoom: 18, addressdetails: 1
            };
        },
        checkExpectation: function(response) {
            return response.data.address && 
                    response.data.address.country_code;
        },
        transformResponse: function(response) {
            return { country_code: response.data.address && 
                    response.data.address.country_code }
        }
    }],
    geoipCheckers: [{
        url: 'https://ipinfo.io/',
        checkExpectation: function(response) {
            return response.data && response.data.country;
        },
        transformResponse: function(response) {
            return { country_code: response.data && 
                    response.data.country }
        }
    }, {
        url: 'https://freegeoip.net/json/',
        checkExpectation: function(response) {
            return response.data && response.data.country_code;
        },
        transformResponse: function(response) {
            return { country_code: response.data && 
                    response.data.country_code }
        }
    }]
});

// request detect() method
geodetector.detect({}, function(error, result) {
    if (error) {
        console.log(" * Console - Error: %s", JSON.stringify(error));
        return;
    }
    console.log(" * Console - Result: %s", JSON.stringify(result));

    var country_code = result && result.country_code;
    if (country_code == 'VN' || country_code == 'vn') {
        // display vietnamese version
    } else {
        // default for the others (english version)
    }
});