Как я могу получить приблизительное географическое местоположение веб-пользователя? - PullRequest
2 голосов
/ 16 февраля 2010

Для моего бизнеса было бы очень полезно, если бы мы могли отображать информацию, соответствующую местонахождению пользователей, когда они попадают на домашнюю страницу нашего сайта. Я понимаю, что попытка получить геолокацию только с IP-адреса не является точной наукой, но мы готовы взять то, что можем.

Какие методы доступны для определения приблизительного местоположения веб-пользователя?

Ответы [ 3 ]

5 голосов
/ 16 февраля 2010

Лучше всего использовать Google API. Вы можете настроить IP в поле формы, которое будет отправлено. Или вы можете использовать .net api

google.loader.ClientLocation, чтобы получить лат / долг человека, используя его IP-адрес


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAALDWeTDQHOJCbCf0JnUqL8BT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQA7AE8xB9MyWgHECPY2qimOp7BUQ"></script>
    <script src="scripts/clientLocation.js" type="text/javascript"></script>
    <script type="text/javascript">
        function $g(id) {
            return document.getElementById(id);
        }

        function displayLocation(latitudeEl, longitudeEl, cityEl, regionEl, countryEl, country_codeEl) {
            var cloc = new ClientLocation.Location(google.loader.ClientLocation);
            if (latitudeEl) latitudeEl.innerHTML = cloc.latitude;
            if (longitudeEl) longitudeEl.innerHTML = cloc.longitude;
            if (cityEl) cityEl.innerHTML = cloc.address.city;
            if (regionEl) regionEl.innerHTML = cloc.address.region;
            if (country) country.innerHTML = cloc.address.country;
            if (country_codeEl) country_codeEl.innerHTML = cloc.address.country_code;
        }

        function init() {
            displayLocation($g("latitude"), $g("longitude"), $g("city"), $g("region"), $g("country"), $g("country_code"));
        }
    </script>

</head>
<body onload="init()">
    <form id="form1" runat="server">
    <div>
        latitude : <span id="latitude"></span>
        <br />
        longitude : <span id="longitude"></span>
        <br />
        city : <span id="city"></span>
        <br />
        region : <span id="region"></span>
        <br />
        country : <span id="country"></span>
        <br />
        country_code : <span id="country_code"></span>
        <br />
    </div>
    </form>
</body>
</html>

// <copyright file="clientLocation.js" company="Sky Sanders">
// This source is placed in the Public Domain.
// http://skysanders.net/subtext
// Attribution is appreciated.
// </copyright>


/*
object literal format for google.loader.clientlocation  
{
"latitude": 33.324,
"longitude": -111.867,
"address": {
"city": "Chandler",
"region": "AZ",
"country": "USA",
"country_code": "US"
}
}
*/

var ClientLocation = {};

ClientLocation.Address = function() {
    /// <field name="city" type="String" />
    /// <field name="region" type="String" />
    /// <field name="country" type="String" />
    /// <field name="country_code" type="String" />
    /// <returns type="ClientLocation.Address"/>
    if (arguments.length > 0) {
        this.city = arguments[0].city;
        this.region = arguments[0].region;
        this.country = arguments[0].country;
        this.country_code = arguments[0].country_code;
        return;
    }
    else {
        this.city = "";
        this.region = "";
        this.country = "";
        this.country_code = "";
    }

}
ClientLocation.Location = function() {
    /// <field name="latitude" type="Number" />
    /// <field name="longitude" type="Number" />
    /// <field name="address" type="ClientLocation.Address" />
    if (arguments.length > 0) {

        this.latitude = arguments[0].latitude;
        this.longitude = arguments[0].longitude;
        this.address = arguments[0].address;

    }
    else {
        this.latitude = 0;
        this.longitude = 0;
        this.address = undefined;
    }

}
2 голосов
/ 16 февраля 2010

Вы не можете сказать точно, и это может быть неточно, но существуют службы для сопоставления IP-адресов с их географическим местоположением.

Я только что выпил и получил: http://www.ip2location.com/

Они, как правило, нуждаются в подписке на свои услуги, хотя

1 голос
/ 16 февраля 2010

Лучший вариант - это лицензировать данные от кого-то вроде MaxMind - они используют множество различных методов, некоторые из них довольно умные, чтобы узнать местоположение, связанное с IP-адресом, и по моему опыту их данные довольно легко интегрируются.

...