2016-08-12 92 views
1

首先,我知道這個post存在。我需要一個免費(或非常便宜的)解決方案,所以我再次提出這個問題。沒有SSL的網站的getCurrentPosition()的免費替代品?

getCurrentPosition()和watchPosition()在不安全的來源上被棄用。要使用此功能,您應該考慮將應用程序切換到安全的來源,例如HTTPS。

Chrome已經不允許在沒有SSL的網站上使用getCurrentPosition()。

Google Maps API可以解決這個問題,但usage limits太低了。 (我們正在管理一個每天有超過400,000頁面瀏覽量的新聞門戶)。

有誰知道getCurrentPosition()的任何免費(或非常便宜的)替代方案?

回答

0

您可以使用https://ipinfo.io API(這是我的服務)。它可以免費獲得高達每天1,000個請求(有或沒有SSL支持)。它給你座標,名稱和更多。這裏有一個例子:

curl ipinfo.io 
{ 
    "ip": "172.56.39.47", 
    "hostname": "No Hostname", 
    "city": "Oakland", 
    "region": "California", 
    "country": "US", 
    "loc": "37.7350,-122.2088", 
    "org": "AS21928 T-Mobile USA, Inc.", 
    "postal": "94621" 
} 

這裏是它構造一個COORDS與API響應對象的例子匹配你getCurrentPosition()得到什麼:

$.getJSON('https://ipinfo.io/geo', function(response) { 
    var loc = response.loc.split(','); 
    var coords = { 
     latitude: loc[0], 
     longitude: loc[1] 
    }; 
}); 

而且這裏有一個詳細的例子,說明如何使用它作爲getCurrentPosition()回退:

function do_something(coords) { 
    // Do something with the coords here 
} 

navigator.geolocation.getCurrentPosition(function(position) { 
    do_something(position.coords); 
    }, 
    function(failure) { 
     $.getJSON('https://ipinfo.io/geo', function(response) { 
     var loc = response.loc.split(','); 
     var coords = { 
      latitude: loc[0], 
      longitude: loc[1] 
     }; 
     do_something(coords); 
     }); 
    }; 
}); 
+0

感謝,但這個並沒有回答我的問題。謝謝 –

+0

好點:)我已經添加了更多的例子 –