Google Geocoding API 有严重的限制(每天 2,500 个请求),我们总是会遇到限制错误。他们的营业执照要10,000美元,对我们来说太贵了。
服务应该适用于不同的语言和不同的国家。
服务应验证地址并返回 lat/lng。地址可以是不同格式的字符串。
我们准备为此类服务付费,最好使用 RESTful API。
Google Geocoding API 有严重的限制(每天 2,500 个请求),我们总是会遇到限制错误。他们的营业执照要10,000美元,对我们来说太贵了。
服务应该适用于不同的语言和不同的国家。
服务应验证地址并返回 lat/lng。地址可以是不同格式的字符串。
我们准备为此类服务付费,最好使用 RESTful API。
你看过Nominatim吗?您可以滚动自己的OpenStreetMaps数据,也可以向OpenStreetMaps或MapQuest发送请求。可能的缺点包括 CC 许可证(需要注明出处,对您来说可能是也可能不是问题)和验证问题(数据几乎完全是众包的,因此确实会发生不准确的情况)。好处包括限制较少的使用政策、频繁更新、全球覆盖,当然,您无法击败价格。
见https://jsfiddle.net/4hzzrws5/
var Data =[
{address: "17 rue de l'Abreuvoir. Nantilly. 28260 La Chaussée d'Ivry"},
{address: "52 rue Ernestine 95100 Argenteuil"},
{address: "3 allée Baudelaire 59139 Wattignies"},
{address: "165, Petit chemin d'aix 13320 Bouc Bel Air"},
{address: "54 avenue Yolande d'Aragon 49100 ANGERS"},
{address: "John Doe, Le Rouho Guidel 56520"},
{address: "51100"},
{address: "21 rue du Docteur Gallet - 74000 Annecy"},
{address: "4 Impasse des Cigales, 26500 Bourg lès Valence"},
{address: "83140 SIX FOURS LES PLAGES"},
{address: "35 cours Vitton 69006 Lyon"},
{address: "7 rue lallier 75009"},
{address: "Paul Michel, Villa Pétricciù,Ghjassu Pétricciù, 20221.CERVIONE"}
]
var cityAndCountry = function(res){
var osmObj= res[0].address,
city=osmObj.town || osmObj.city || osmObj.county || '',
country=osmObj.country || '',
iso2 =osmObj.country_code || '';
var out = [ city, country, iso2];
return out
}
var latAndLon = function(res){
var lat= res[0].lat,
lon= res[0].lon;
var out = [lat,lon];
return out
}
var queryOsm = function(url) {
$.getJSON(url, function (data) {
data.length==0?
console.log(["","",""],data)
:console.log(cityAndCountry(data),latAndLon(data),data);
});
}
var delayedPing = function (i,data) {
// console.log(i, data.length)
var d = data[data.length-i];
if(d.address){
// placeAddressOnMap(gc, d.address, d.service||"", d.customer||"")
var url = 'https://nominatim.openstreetmap.org/search/'+d.address+'?format=json&addressdetails=1&limit=1';
queryOsm(url)
} else { console.log(["","","",d.address]) }
var delay = 1000+200*Math.random();
if (--i > 0) { setTimeout(function () { delayedPing(i,data); }, delay); }
}
delayedPing(Data.length,Data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我在SmartyStreets工作,你描述的是他们的核心领域。
您可能对 LiveAddress 感兴趣,它将地址转换为纬度/经度并且每秒可以处理数千个请求。它地理分布在 3 个数据中心,并具有 RESTful 端点。每个请求最多可以处理 100 个地址。如果您有 Excel 或 CSV 文件或类似文件,还有一个列表处理版本。
最高价格为 10,000 美元,但它可以为您提供一年无限制的查询。
一些示例代码位于https://github.com/smartystreets/LiveAddressSamples。
他们的许可协议没有限制您的使用的限制。Dbaseman 是对的:您会遇到限制错误,因为它违反了 TOS(除非您从他们那里获得了营业执照,但即便如此,地址也是“最佳猜测”——没有像 CASS 认证服务那样标准化和验证. 这是要记住的事情)。
不,没有,如果您查看他们的许可,它明确旨在防止您像那样使用他们的服务。基本上,您只打算在以下情况下使用它
他们还禁止您将其服务的结果保存/缓存到数据库。谷歌使用他们的工具可以很容易地进行原型制作,但是一旦你开始扩大规模,你就会付出代价(在这方面与 M$ 没有太大区别)。
使用限制
每个应用程序限制(由您的访问密钥标识):每天 100,000 次调用
每个 IP 限制:/v1/public/:每小时 1,000 个呼叫;/v1/yql/:每小时 10,000 次调用