web-dev-qa-db-ja.com

ユーザーIPアドレスに基づいた場所のGoogle API

Google Maps APIを使用してIPアドレスに基づいてユーザーの現在の場所(都市)を取得する方法を探しています。

http://freegeoip.net/json に似ていますが、Google Maps APIのみを使用しています。これは可能ですか?

40
Ankit

GoogleはすでにGAEに送信されるすべてのリクエストに位置データを追加します( goJavaphp および python )。 X-AppEngine-CountryX-AppEngine-RegionX-AppEngine-CityおよびX-AppEngine-CityLatLongヘッダーに興味があるはずです。

例は次のようになります。

X-AppEngine-Country:US
X-AppEngine-Region:ca
X-AppEngine-City:norwalk
X-AppEngine-CityLatLong:33.902237,-118.081733
20
Peter Knego

GoogleはIPとロケーションのマッピングの使用に積極的に顔をしかめているようです。

https://developers.google.com/maps/articles/geolocation?hl=en

その記事では、W3CジオロケーションAPIの使用を推奨しています。私は少し懐疑的でしたが、ほとんどすべての主要なブラウザーがすでに位置情報APIをサポートしているようです。

http://caniuse.com/geolocation

11
Jeremy Wadhams

スクリプトはこちら これは、Google APIを使用してユーザーの郵便番号を取得し、入力フィールドに入力します。

function postalCodeLookup(input) {
    var head= document.getElementsByTagName('head')[0],
        script= document.createElement('script');
    script.src= '//maps.googleapis.com/maps/api/js?sensor=false';
    head.appendChild(script);
    script.onload = function() {
        if (navigator.geolocation) {
            var a = input,
                fallback = setTimeout(function () {
                    fail('10 seconds expired');
                }, 10000);

            navigator.geolocation.getCurrentPosition(function (pos) {
                clearTimeout(fallback);
                var point = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
                new google.maps.Geocoder().geocode({'latLng': point}, function (res, status) {
                    if (status == google.maps.GeocoderStatus.OK && typeof res[0] !== 'undefined') {
                        var Zip = res[0].formatted_address.match(/,\s\w{2}\s(\d{5})/);
                        if (Zip) {
                            a.value = Zip[1];
                        } else fail('Unable to look-up postal code');
                    } else {
                        fail('Unable to look-up geolocation');
                    }
                });
            }, function (err) {
                fail(err.message);
            });
        } else {
            alert('Unable to find your location.');
        }
        function fail(err) {
            console.log('err', err);
            a.value('Try Again.');
        }
    };
}

それに応じて調整して、さまざまな情報を取得できます。詳細については、 Google Maps APIドキュメント をご覧ください。

4
davidcondrey