这篇文章主要讲解google地图的一些自定义的用法,以及在实际项目中遇到的一些问题及解决方案,跟大家分享一下。本文不讲解google地图 SDK的接入及出现的问题,如何解决,可以去看这篇文章《iOS Google地图SDK入门教程》,讲解的很详细。
接下来讲解的内容:
1.设置google地图的缩放比例
2.添加注点(GMSMarker)
3.添加标注点显示气泡
4.设定地图显示范围
5.添加轨迹覆盖物
1.设置google地图的缩放比例
google地图的缩放比例和百度地图不一样,使用GMSCameraPosition设置地图的缩放比例。进入到GMSMutableCameraPosition类中,通过修改zoom的值,改变google地图的缩放比例。


2.添加注点(GMSMarker)
添加google地图的标注点,也就是覆盖物,有两种方式:一是直接显示标注点图片;二是自定义标注点视图。如果需要添加自定义属性或者方法,可以创建一个继承于GMSMarker的类,在这个类中添加中属性和方法。
添加显示图片标注点,和百度地图一样,直接赋值icon即可。如果需要添加自定义的标注点,可以使用iconView属性(这个属性,百度地图没有)。属性详情如下:

google地图添加标注点的方式和百度地图不一样,是直接设置覆盖物的地图属性为需要显示的地图;如果需要移除标志点,需要设置标注点的map = nil

注意:标注点的偏移量,默认值为(0.5,1.0)

3.添加标注点显示气泡
注意一点:如果在气泡视图中添加了UIScrollVIew/UITableView,百度地图的自定义气泡视图可以滑动,但google地图的气泡视图不可以滑动。
添加标注点显示气泡,需要实现google地图的代理方法。下面截图中的第一个方法与第二个方法的区别,第二个方法会添加一个带箭头的气泡视图,而第一个不会有。

下面截图中,是具体的实现google地图气泡代理方法,具体的思路如下:将标注点强制转换为自定义的标志点,计算出气泡的显示宽高,返回气泡视图。关键的部分是设置气泡的显示位置。还是通过GMSCameraUpdate这个类,设置视角的x方向和y方向的偏移量,这里只设置气泡的y方向的偏移量。


4.设定地图显示范围
如果添加了多个标注点,如何将它们设置在可见范围内呢?通过GMSCoordinateBounds这个类,将所有的标注点的经纬度值,添加到这个bound中。

添加经纬度
接下来如何设置这个bound呢?使用GMSCameraUpdate这个类(更新地图的视角),使用如下方法,这个方法中,可以设置显示范围的上下左右的偏移量。

显示合适范围
接下来就是更新视角,大功告成!

5.添加轨迹覆盖物
添加轨迹线,使用的是GMSPolyline,与百度地图不同的是,需要设置path。将所有的轨迹点添加到路径中。



网友评论