关于 Google Maps SDK 与 GMSPanoramaView 实例化相关的计费问题
Question about Google Maps SDK billing in relation to GMSPanoramaView instantiation
我正在尝试计算使用 Google Maps SDK 在 iOS 应用中加载和显示 PanoramaView
的成本。
根据官方文档,StreetView 每 1000 实例化 收费 14 美元,最高 10 万,超过 11.2 美元(批量折扣超过 50 万)。 Here 来源。
特别指出:
An instantiation of a panorama object occurs on iOS with the
GMSPanoramaView object.
对我来说,因为英语不是我的母语,而且我所知道的实例化概念,并不是很清楚这意味着什么。
关键是官方文档提供了几种方法(参见 here 中的一个)来移动位置并更改 GMSPanoramaView
对象创建后显示的全景图。文档中唯一明确说明的是,通过双击或点击导航箭头移动到附近的全景图是不收费的。
那么关于计费,我想了解这两者中的哪一个适用:
每次创建新的 GMSPanoramaView(例如 let panoView = GMSPanoramaView(frame: .zero)
)都会收取固定费用,并且一旦创建,将全景图移动到不同的区域并通过调用moveNearCoordinate()
方法是免费的(如果处理得当,基本上是每次应用启动收取0.014$);
固定成本也适用于 moveNearCoordinate()
方法 - 因此,每次更改 GMSPanoramaView
的 panoramaID
属性。
当一个人告诉我在他的应用程序(使用 Android SDK)中他也为每次移动全景图付费时,我几乎可以肯定 1. 案例是真实的。
当然,如果我问这个是因为我仍然不能自己测试它。任何人都可以阐明计费的运作方式吗?
编辑: 我发现 Google 提供了一些免费积分,我很快建立了一个项目来测试它。
项目构建如下:
GMSPanoramaView 对象被初始化为主 ViewController
的 class 变量 - 传递 .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到第十二个,所以没有出现重复的全景图。
显然 Google 开发人员控制台每 4-6 小时报告一次请求,因此我能够进行三项测试。我尝试在我的 iPhone 上启动该应用程序,在不退出该应用程序的情况下加载所有 12 个 panos(+ 初始一个),然后在每次测试时强制退出该应用程序。这里是每个测试的结果:
- 4 个请求被计费;
- 2 个请求已计费;
- 2 个请求被计费,我在这个过程中失去了一次连接。
这有点令人困惑,因为我预计会有 1 或 13 个请求被计费。 Maps SDK 有问题,我的 GMSPanoramaView
对象以某种方式被解除分配并重新实例化(这不太可能,因为全景图始终显示在屏幕上)或者还有另一个我想不到的问题。
再一次,如果有人能澄清发生了什么,我将不胜感激。此外,非常感谢将 instantiations/the 成本降至最低的技巧。
显然,通过将 GMSPanoramaView
对象声明为 static
,我能够减少收费请求的数量。不过,我仍然不清楚为什么在大约 50% 的情况下,我每次使用两次请求都要收费。
我正在尝试计算使用 Google Maps SDK 在 iOS 应用中加载和显示 PanoramaView
的成本。
根据官方文档,StreetView 每 1000 实例化 收费 14 美元,最高 10 万,超过 11.2 美元(批量折扣超过 50 万)。 Here 来源。
特别指出:
An instantiation of a panorama object occurs on iOS with the GMSPanoramaView object.
对我来说,因为英语不是我的母语,而且我所知道的实例化概念,并不是很清楚这意味着什么。
关键是官方文档提供了几种方法(参见 here 中的一个)来移动位置并更改 GMSPanoramaView
对象创建后显示的全景图。文档中唯一明确说明的是,通过双击或点击导航箭头移动到附近的全景图是不收费的。
那么关于计费,我想了解这两者中的哪一个适用:
每次创建新的 GMSPanoramaView(例如
let panoView = GMSPanoramaView(frame: .zero)
)都会收取固定费用,并且一旦创建,将全景图移动到不同的区域并通过调用moveNearCoordinate()
方法是免费的(如果处理得当,基本上是每次应用启动收取0.014$);固定成本也适用于
moveNearCoordinate()
方法 - 因此,每次更改GMSPanoramaView
的panoramaID
属性。
当一个人告诉我在他的应用程序(使用 Android SDK)中他也为每次移动全景图付费时,我几乎可以肯定 1. 案例是真实的。
当然,如果我问这个是因为我仍然不能自己测试它。任何人都可以阐明计费的运作方式吗?
编辑: 我发现 Google 提供了一些免费积分,我很快建立了一个项目来测试它。
项目构建如下:
GMSPanoramaView 对象被初始化为主
ViewController
的 class 变量 - 传递.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到第十二个,所以没有出现重复的全景图。
显然 Google 开发人员控制台每 4-6 小时报告一次请求,因此我能够进行三项测试。我尝试在我的 iPhone 上启动该应用程序,在不退出该应用程序的情况下加载所有 12 个 panos(+ 初始一个),然后在每次测试时强制退出该应用程序。这里是每个测试的结果:
- 4 个请求被计费;
- 2 个请求已计费;
- 2 个请求被计费,我在这个过程中失去了一次连接。
这有点令人困惑,因为我预计会有 1 或 13 个请求被计费。 Maps SDK 有问题,我的 GMSPanoramaView
对象以某种方式被解除分配并重新实例化(这不太可能,因为全景图始终显示在屏幕上)或者还有另一个我想不到的问题。
再一次,如果有人能澄清发生了什么,我将不胜感激。此外,非常感谢将 instantiations/the 成本降至最低的技巧。
显然,通过将 GMSPanoramaView
对象声明为 static
,我能够减少收费请求的数量。不过,我仍然不清楚为什么在大约 50% 的情况下,我每次使用两次请求都要收费。