Tag: google maps sdk ios

不能把谷歌地图GMSMapView在主要视图的子视图?

我正在努力解决这个问题! 我想添加一个谷歌地图GMSMapView到UIView只是我的ViewController的主UIView的一部分。 这应该是简单的…我创造了故事板一个UIView的大小,我想要把它放在主UIView 。 从接口文件中摘录: @interface MapViewController : UIViewController <CLLocationManagerDelegate> @property(nonatomic) IBOutlet GMSMapView *mapView; 与主UIView内的这个UIView链接的mapView。 我在做什么: @synthesize mapView = _mapView; – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:10]; _mapView = [GMSMapView mapWithFrame:_mapView.bounds camera:camera]; _mapView.myLocationEnabled = YES; } 这应该工作,不是吗? 我得到的是,我的内部UIView是空的。 如果我在谷歌的开始指南谷歌地图集成文档后实例化一个地图,它的工作原理,但它将地图分配给MAIN UIView,那是一个不同的东西。 我甚至试图改变从UIView故事板到GMSMapView的我的mapView的类。 […]

GMSPolyline非常大的记忆秒杀

在GPS应用程序中,用户可以显示我们称之为各种不同types地图的复杂位置点列表,每个轨道可以包含2k到10k个位置点。 在非Google地图types中渲染时,轨道被大量修剪,修剪和path简化。 这是为了保持内存使用率和性能。 即使在最坏的情况下,我们通常也只能提交远远less于一千(总计)的转换位置点到OpenGLstream水线。 在整合Google Maps SDK for iOS时,我们最初试图继续利用我们自己的OpenGL轨道渲染系统,但碰到OpenGL上下文冲突的问题(渲染工作,但是我们无法获得GMSMapView和我们自己内部的OpenGL资源以释放没有人接触删除的内存)。 因此,我们正在尝试利用GMSPolyline结构,并让Google SDK进行跟踪呈现,但是我们遇到了主要的内存使用问题,并正在寻找解决这些问题的指导。 使用Xcode仪器,我们在创build约25条聚合线时总共监测了23k个位置点(不是每个)的内存使用情况。 在创build多行的过程中,应用程序内存使用量从大约14 MB增加到大约172 MB,净峰值大约为158 MB。 不久之后,所有的多线创build,内存使用最终下降到约19 MB,似乎是稳定的,累计净额约5 MB,所以看来每个位置点需要大约220个字节(5 MB / 23K点)商店。 什么伤害我们是峰值内存使用情况。 虽然我们的实验室testing只使用了23k的位置点,但在现实世界中,通常还有更多,而iOS似乎在Google地图在iPhone 5上消耗大约450 MB之后放弃了我们的应用程序(而我们的内部多线渲染系统达到了峰值相同testing用例为12 MB)。 显然, GMSPolyLine结构不适用于我们要求的大量使用。 我们尝试用独立的自动释放池包装一些多行创build循环,然后在适当的位置排空这些循环,但这对内存使用没有影响。 创build多边形线后控制回到主运行循环的峰值内存使用根本没有变化。 后来变得清楚为什么; 在创build多行之后,Google Map系统才会释放资源,直到第一个DisplayLinkcallback。 我们接下来的工作就是手动调整我们在GMSPolyline中推送的数据量,可能会使用我们自己的边界testing,裁剪,修剪和最小化,而不是依靠Google地图来有效地完成这项工作。 这里的缺点是,这将意味着更多的GMSPolyline对象将被分配和释放,可能在用户在地图上进行平移/缩放的时候。 这些对象中的每一个都将具有更less的位置点,但是仍然担心这种方法的不可预见的后果,即许多GMSPolyline分配和释放的隐藏开销。 所以问题是,处理这种情况的最好方法是什么?谷歌的某个人可以对GMSPolyline最佳实践,上限,瓶颈等方面GMSPolyline ?