【问题标题】:Question about Google Maps SDK billing in relation to GMSPanoramaView instantiation关于与 GMSPanoramaView 实例化相关的 Google Maps SDK 计费问题
【发布时间】:2023-03-05 23:41:02
【问题描述】:

我正在尝试计算使用 Google Maps SDK 在 iOS 应用中加载和显示 PanoramaViews 的成本。

根据官方文档,每 1000 个实例最多 100k,StreetView 收费 14 美元,超过 11.2 美元(批量折扣超过 500k)。 Here来源。

特别指出:

全景对象的实例化发生在 iOS 上 GMSPanoramaView 对象。

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

所以关于计费,我试图了解这两个中的哪一个适用:

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

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

当一个人告诉我在他的应用程序(使用 Android SDK)中,每次移动全景图时,我几乎可以肯定 1. 的情况是正确的。

当然,如果我问这个是因为我仍然无法自己测试它。任何人都可以了解计费的运作方式吗?

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

项目构建如下:

  • 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")
    
  • frame设置等于viewDidLayoutSubviews()中的VC视图,所以全屏;

  • 在层次结构的顶部有一个UIButton,每次按下它都会通过调用streetView.move(toPanoramaID: newID)移动全景图。 newID 是一个字符串变量,它假定 12 个有效的硬编码街景 ID 中的一个的值。该过程是连续的,从第一个 ID 到第十二个,因此不会显示重复的全景图。

显然,Google Developer Console 每 4-6 小时报告一次请求,因此我能够进行三个测试。我尝试在我的 iPhone 上启动该应用程序,加载所有 12 个全景图(+ 最初的一个)而不退出该应用程序,然后为每次测试强制退出该应用程序。这里是每个测试的结果:

  1. 4 个请求已计费;
  2. 2 个请求计费;
  3. 2 个请求计费,我在此过程中失去了一次连接。

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

再次,如果有人能澄清正在发生的事情,我将不胜感激。此外,非常感谢最小化实例化/成本的技巧。

【问题讨论】:

    标签: ios swift instantiation google-maps-sdk-ios


    【解决方案1】:

    显然我可以通过将GMSPanoramaView 对象声明为static 来减少收费请求的数量。尽管如此,我仍然不清楚为什么在大约 50% 的情况下,我每次使用两次请求都会被收取费用。

    【讨论】:

    • 所以澄清一下,当您使用 streetView.move 更改全景而不重新实例化 GMSPanoramaView 对象时,会发生什么?假设我们这样做了 50 次。是否按 50 个负载收费?
    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多