Google Maps APIを使用してIPアドレスに基づいてユーザーの現在の場所(都市)を取得する方法を探しています。
http://freegeoip.net/json に似ていますが、Google Maps APIのみを使用しています。これは可能ですか?
GoogleはIPとロケーションのマッピングの使用に積極的に顔をしかめているようです。
https://developers.google.com/maps/articles/geolocation?hl=en
その記事では、W3CジオロケーションAPIの使用を推奨しています。私は少し懐疑的でしたが、ほとんどすべての主要なブラウザーがすでに位置情報APIをサポートしているようです。
スクリプトはこちら これは、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ドキュメント をご覧ください。