我正在尋找一個API,它可以返回回此基礎上用戶的當前位置(市)的IP adress.i搜查,結果發現谷歌API的位置,根據用戶的IP地址
但是我的客戶是Google Fan的大好時機,並且只堅持任何可用的Google API,有人能幫我解決這個問題。
我正在尋找一個API,它可以返回回此基礎上用戶的當前位置(市)的IP adress.i搜查,結果發現谷歌API的位置,根據用戶的IP地址
但是我的客戶是Google Fan的大好時機,並且只堅持任何可用的Google API,有人能幫我解決這個問題。
Google已經將位置數據附加到所有進入GAE的請求中(請參閱go,java,php和的請求標頭文檔)。您應該有興趣X-AppEngine-Country
,X-AppEngine-Region
,X-AppEngine-City
和X-AppEngine-CityLatLong
標題。
一個例子是這樣的:
X-AppEngine-Country:US
X-AppEngine-Region:ca
X-AppEngine-City:norwalk
X-AppEngine-CityLatLong:33.902237,-118.081733
我經歷了你的鏈接並找到了它的PHP版本(https://開發者。 google.com/appengine/docs/php/#PHP_Request_headers),但我不確定如何使用此服務。我基本上是建立一個網站,它需要找出用戶的國家代碼,以及你提到的X-AppEngine-Country標題。什麼是AppEngine或它的目的是什麼?我只是想知道是否應該實施一些國家代碼。在此先感謝 –
這僅適用於應用程序,並涵蓋應用程序提供的數據的服務器端處理。因此它不適用於網頁。 – Patanjali
我同意@Patanjali到目前爲止,Google API不接受'IP地址'作爲其參數的一部分。它會給你來電者的地理位置。如果你把這個api調用放在你的服務器代碼中,它會給你服務器的地理位置。除非這是客戶端代碼,否則可能會給您用戶的地理位置。 (不管怎樣,我會針對不同瀏覽器測試它) –
它看起來像谷歌積極不贊成使用IP到位置映射:
https://developers.google.com/maps/articles/geolocation?hl=en
這篇文章鼓勵使用W3C地理定位API。我有點懷疑,但它看起來像幾乎所有的主流瀏覽器已經支持的地理位置API:
不幸的是,支持並不意味着用戶已啓用該功能,許多caniuse.com支持的瀏覽器版本都支持,但默認情況下它是禁用的。 – Dan
@Jeremy Wadhams這個API的精度非常好,但是我正在尋找一種方法來根據用戶的國家啓用某些折扣,並且讓用戶不得不允許它打破整個想法。你有沒有關於如何以簡單的方式獲得用戶國家的竅門的提示,這種方式不依賴於第三方服務或者僅僅是谷歌,因爲它是我的僱主信任的唯一服務。 –
兩年後,但仍然相關。 OP的上下文似乎是服務器端的,但Google的東西是客戶端的(根據W3C使用* navigator.geolocation *屬性,需要javascript,這意味着你不能根據位置提供頁面。 freegeoip。net等解決方案可以完全服務器端,儘管它們依賴於IP地址是正確的(即沒有VPN)。 – Patanjali
Here's a script將使用谷歌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 documentation。
嘿謝謝分享!我試圖調用你的函數,就像這樣:'(function(){var_showPostCode = document.getElementById(「showPS」); var ps = postalCodeLookup(showPostCode); showPostCode.value()= ps; }) ;'但沒有喜樂。我究竟做錯了什麼? –
afaik,谷歌沒有基於ip的ippi定位 – keune
你可以試試https://geoipify.whoisxmlapi.com/ – 2017-12-16 04:03:29