关于谷歌地图SDK计费与GMSPanoramaView实例化的问题



我正试图计算使用谷歌地图SDK在iOS应用程序中加载和显示PanoramaView的成本。

根据官方文件,StreetView每1000次实例化最多10万次收费14美元,高于此收费11.2美元(批量折扣超过50万(。这是消息来源。

特别指出:

在iOS上使用GMSPanoramaView对象。

对我来说,既因为英语不是我的母语,也因为我所知道的实例化概念,我并不清楚这意味着什么。重点是,官方文档提供了两种方法(请参见此处(,用于在创建GMSPanoramaView对象后移动位置并更改其显示的全景。文件中唯一明确指出的是,通过双击或点击导航箭头来移动到附近的全景图是不收费的。

关于计费,我试图了解这两种情况中的哪一种适用:

  1. 每次创建新的GMSPanoramaView(例如let panoView = GMSPanoramaView(frame: .zero)(都会收取固定成本,并且一旦创建,将全景移动到不同的区域并通过调用moveNearCoordinate()方法进行显示是免费的(如果处理得当,基本上每次应用程序启动都会收取0.014美元(;

  2. 固定成本也适用于moveNearCoordinate()方法——因此,每次更改GMSPanoramaViewpanoramaID属性时。

我几乎可以肯定。当一个人告诉我,在他的应用程序(使用安卓SDK(中,每次移动全景时,他都会被收取费用时,情况确实如此。

当然,如果我问这个是因为我还不能自己测试。有人能透露一下账单是如何运作的吗?

编辑:我发现谷歌提供了一些免费积分,我很快就建立了一个项目来测试它。

该项目建设如下:

  • GMSPanoramaView对象被初始化为主ViewController的类变量-在frame发出警告时通过.zero

    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,因此不会显示重复的全景图。

显然,谷歌开发者控制台每4-6小时报告一次请求,所以我可以做三次测试。我试着在iPhone上启动该应用程序,在不退出应用程序的情况下加载所有12个pano(+最初的一个(,然后每次测试都强制退出该应用程序。这里是每个测试的结果:

  1. 4个请求已计费
  2. 2个请求已计费
  3. 2个请求已计费,在此过程中我有一次断开了连接

这有点令人困惑,因为我预计会有1或13个请求计费。要么是Maps SDK出了问题,我的GMSPanoramaView对象以某种方式被释放并重新实例化(这不太可能,因为屏幕上总是显示全景(,要么是我想不出另一个问题。

再说一遍,如果有人能澄清发生了什么,我很感激。此外,非常感谢最小化实例化/成本的提示。

通过将GMSPanoramaView对象声明为static,我能够将每次应用程序启动的收费请求数减少到1。

最新更新