快速问题,只是为了澄清措辞和含义(因为它已经改变了几次地图加载...)
Places API常见问题解答中有以下两个声明:
Google Places API具有以下查询限制:
具有API密钥的用户每24小时允许1 000个请求.通过API控制台验证其身份的用户每24小时允许10万个请求.通过在控制台中启用结算,验证需要信用卡.我们要求您的信用卡纯粹用于验证您的身份.使用Places API不会向您的信用卡收费.虽然下限足以进行开发和测试,但我们建议在启动应用程序之前启用上限.可以申请额外配额.如果获得批准,额外配额是免费的.如果在将来某个阶段有一个选项可用于支付额外配额,那么该配额将超过现有的免费配额,您需要明确注册.
请注意,某些服务可能具有乘数:
文本搜索服务的乘数为10倍.也就是说,您所做的每个文本搜索请求将被视为针对您的配额的10个请求.雷达搜索服务的乘数为5倍.也就是说,您所做的每个雷达搜索请求将被视为针对您的配额的5个请求.如果您已将Google Places API作为Maps API for Business合同的一部分购买,则乘数可能会有所不同.有关详细信息,请参阅Google Maps API for Business文档.
这意味着Google Places API的使用限制为每天100,000次查询,如果您正在进行文本搜索,则限制为10,000次.
但是,在Uplift页面上,它显示以下内容:
如果您正在开发仅需要搜索地点且不提交新地点或放置凹凸的基于Web的应用程序,则应使用Maps API的Places库,而不是使用Places API Web服务.位置库为每个最终用户而不是每个键分配一个配额.这意味着您的可用配额会随着您的用户群而增加,而不是以固定金额为上限.
我通过以下方式使用Places API:
https://maps.googleapis.com/maps/api/js?key=XXX&libraries=places
...
service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);
Run Code Online (Sandbox Code Playgroud)
还有一些细节搜索和照片搜索.
因此我的问题是; 鉴于我使用Places API,我是否受到我的应用程序的100,000个查询限制,或者我在应用程序级别基本上没有限制,因为我的配额是每个最终用户?(即每个唯一的IP?如果我有10,000个用户,我的整个用户群有100,000*10,000的有效配额?)
编辑:
为清楚起见:如果我将API密钥丢入https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=XXXX,它将在Google API控制台上增加我的Places配额计数,但是如果我通过我的JS应用程序运行查询,我看不到配额使用更改.我想确保我不会突然受到大量配额的影响.
我正在使用HashLocation的扩展来为Ember.js实现一个hashbang url类型.
这是代码片段:
(function() {
var get = Ember.get, set = Ember.set;
Ember.Location.registerImplementation('hashbang', Ember.HashLocation.extend({
getURL: function() {
return get(this, 'location').hash.substr(2);
},
setURL: function(path) {
get(this, 'location').hash = "!"+path;
set(this, 'lastSetURL', "!"+path);
},
onUpdateURL: function(callback) {
var self = this;
var guid = Ember.guidFor(this);
Ember.$(window).bind('hashchange.ember-location-'+guid, function() {
Ember.run(function() {
var path = location.hash.substr(2);
if (get(self, 'lastSetURL') === path) { return; }
set(self, 'lastSetURL', null);
callback(location.hash.substr(2));
});
});
},
formatURL: function(url) {
return '#!'+url;
}
}));
})();
Run Code Online (Sandbox Code Playgroud)
我通过重新打开路由器来使用它:
App.Router.reopen({
location: 'hashbang'
}); …Run Code Online (Sandbox Code Playgroud) 与我的 jenkinsfile 的一部分苦苦挣扎,这需要混合凭据和传递给函数的定义变量。
函数看起来像这样:
platformList.each { platform ->
stage("Build ${platform}") {
withCredentials([usernamePassword(credentialsId: 'XXX-XXX-XX', passwordVariable: 'unity_password', usernameVariable: 'unity_username')]) {
sh label: "Build App", script: '${WORKSPACE}/ci/build_app.sh build_app ${platform} ${deployment} $unity_username $unity_password'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图遵守这里讨论的关于字符串插值的建议:https : //www.jenkins.io/doc/book/pipeline/jenkinsfile/#string-interpolation
但是,我似乎无法将内插凭据与单引号以及${platform}每个循环中定义的派生变量混合使用。
platformList是一个包含 1+ 个字符串的数组。它是这样生成的:
script {
if (params['windows'] == true) {
platformList.add("windows")
}
if (params['osx'] == true) {
platformList.add("osx")
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果我按原样运行此脚本,则该${platform}变量将作为空白字符串传递给sh调用。
如果我双引号sh调用它可以正常工作,但是我会收到有关通过插值传递的不安全凭据的警告。
该${deployment}变量是一个定义为作业执行一部分的字符串参数,解析没有问题,所以我认为这是一个与each循环相关的问题。