与 GMSPanoramaView 实例化相关的 Google Maps SDK 计费问题

问题描述

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

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

特别指出:

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

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

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

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

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

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

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

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

项目构建如下:

  • GMSPanoramaView 对象被初始化为主 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()
  • frame 设置为等于 view.addSubview(streetView) streetView.move(toPanoramaID: "random_pano_id") 中的 VC 视图,所以全屏;

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

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

  1. 4 个请求被计费;
  2. 对 2 个请求进行计费;
  3. 对 2 个请求计费,我在此过程中丢失了一次连接。

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

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...