我试图计算出使用Google Maps SDK在iOS应用程序中加载和显示PanoramaView
的成本。
根据官方文档,StreetView每1000示例化收取14美元,最高10万,超过10万则收取11.2美元(批量折扣超过50万)。Here源。
特别是,它指出:
全景对象的示例化发生在iOS上,具有GMSPanoramaView对象。
对我来说,因为英语不是我的母语,而且我所知道的示例化的概念,并不真正清楚这意味着什么。重点是官方文档提供了几种方法(见这里)来移动位置并在创建GMSPanoramaView
对象后更改其显示的全景。文档中唯一明确指出的是,通过双击或点击导航箭头移动到附近的全景是不收费的。
所以关于计费,我试图理解这两个中的哪一个适用:
1.每次创建新的GMSPanoramaView时收取固定费用(例如,let panoView = GMSPanoramaView(frame: .zero)
),并且,一旦创建,将全景移动到不同的区域并通过调用moveNearCoordinate()
方法来显示它是免费的(基本上,如果处理得当,每次应用程序启动都要收取0.014美元);
1.固定成本也适用于moveNearCoordinate()
方法-因此,每次改变GMSPanoramaView
的panoramaID
属性时。
我几乎可以肯定,1。一个家伙告诉我,在他的应用程序(使用Android SDK)中,每次移动全景图时,他也会被计费。
当然,如果我问这个是因为我还不能自己测试它。有人能解释一下账单是如何运作的吗?
**编辑:**我发现谷歌提供了一些免费的学分,我很快就建立了一个项目来测试它。
本工程建设如下:
- GMSPanoramaView对象被初始化为主
ViewController
的类变量-将.zero
传递为frame
会给出警告:
private let streetView: GMSPanoramaView = {
let pano = GMSPanoramaView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))
pano.camera = GMSPanoramaCamera(heading: 0, pitch: 0, zoom: 0)
return pano
}()
- 在
viewDidLoad()
中进行了额外的设置:
view.addSubview(streetView)
streetView.move(toPanoramaID: "random_pano_id")
- 帧被设置为等于
viewDidLayoutSubviews()
中的VC视图,所以全屏; - 在层次结构的顶部有一个
UIButton
,每次按下它都会通过调用streetView.move(toPanoramaID: newID)
来移动全景。newID
是一个字符串变量,它假定值为12个有效的硬编码街景ID中的一个。该过程是顺序的,从第一个ID到第十二个ID,因此不会显示重复的全景图。
显然,Google开发者控制台每4-6小时报告一次请求,所以我可以做三次测试。我试过在我的iPhone上启动应用程序,加载所有12个panos(+初始的一个)而不退出应用程序,然后强制退出每个测试的应用程序。以下是每个测试的结果:
- 4项请求已计费;
- 2个请求已计费;
- 2个请求计费,在此过程中我失去了一次连接。
这有点令人困惑,因为我预计要么1或13个请求计费。要么是MapSDK出了问题,我的GMSPanoramaView
对象被释放并重新示例化(这不太可能,因为全景总是显示在屏幕上),要么是另一个我想不出来的问题。
再次,如果有人能澄清发生了什么,我很感激。此外,最大限度地减少示例化/成本的提示是超级赞赏。
1条答案
按热度按时间bzzcjhmw1#
显然,我能够通过将
GMSPanoramaView
对象声明为static
来减少收费请求的数量。