我正在尝试计算使用 Google Maps SDK 在 iOS 应用程序中加载和显示
PanoramaView
的成本。
根据官方文档,StreetView 每 1000 个实例 收费 14 美元,最多 10 万次,超过 11.2 美元(批量折扣超过 50 万次)。 这里来源。
特别指出:
全景对象的实例化发生在 iOS 上 GMSPanoramaView 对象。对我来说,因为英语不是我的母语,而且我所知道的实例化概念并不是很清楚这意味着什么。 重点是,官方文档提供了几种方法(请参见
here)来移动位置并更改 GMSPanoramaView
对象创建后显示的全景图。文档中唯一明确指出的是,通过双击或点击导航箭头移动到附近的全景图不需要付费。关于计费,我试图了解这两者中哪一个适用:
let panoView = GMSPanoramaView(frame: .zero)
)都会收取固定费用,并且一旦创建,将全景图移动到不同的区域并通过调用
moveNearCoordinate()
方法显示它是免费的(如果处理得当,基本上每次应用程序启动都会收取0.014美元的费用);
moveNearCoordinate()
方法 - 因此,每次更改
panoramaID
的
GMSPanoramaView
属性时。
当然,如果我问这个是因为我还无法自己测试它。谁能解释一下计费方式如何?
编辑:我发现Google提供了一些免费积分,我很快就建立了一个项目来测试它。
项目搭建如下:
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 到第十二个,因此不会显示重复的全景图。
GMSPanoramaView
对象以某种方式被释放并重新实例化(这不太可能,因为全景图总是显示在屏幕上),或者还有另一个我想不到的问题。再次,如果有人能澄清发生了什么,我将不胜感激。另外,非常感谢最小化实例化/成本的技巧。
GMSPanoramaView
对象声明为
static
,我能够将每个应用程序启动的收费请求数量减少到 1 个。