上回我们学习了如何搭建一个google map应用,了解了基础知识,下面我们来深入学习google map中待发掘的宝藏
在这篇文章,我将告诉你
1. 如何创建google地图
2. Google地图 的模式,和地图类型
3. Google地图上的控件使用
4. Google地图的点击事件和其他事件
5. 摄像头移动知识
一. 地图对象
1. 获得地图对象
A. 地图控件所在的fragment
在上一篇中,我们自动生成项目后,可以看到MapActivity和它的布局文件activityt_maps,布局文件中直接使用fragment控件作为根节点,然后在activity中使用findFragmentById获得地图fragment。这里有两种获得方法
(1) 使用xml文件
(2) 使用代码获得
mMapFragment= MapFragment.newInstance();
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.my_container, mMapFragment);
fragmentTransaction.commit();
注:Google Maps Android API 需要 API 级别 12 或更高级别,才能支持 MapFragment
对象。如果您的目标是低于 API级别 12 的应用,可通过 SupportMapFragment
(v4包的)
类访问同一功能。 您还必须提供 Android 支持库。
注:这里可以使用的碎片有SupportMapFragment和MapFragment,前者支持api12以前的机型,后者不是
B. 给fragment注册地图就绪的接口
地图碎片所在的activity界面需要实现 OnMapReadyCallback监听接口,并重写onMapReady方法,该方法返回的GoogleMap对象就是我们要的地图对象。MapFragment对象注册这个监听,mapFragment.getMapAsync(this);
注:必须从主线程调用 getMapAsync(),回调将在主线程中执行。 如果用户设备上未安装 Google Play 服务,则用户安装 Play 服务后才会触发回调。
使用地图对象时的关键类是GoogleMap类。 GoogleMap 在您的应用内为地图对象建模。 在您的 UI 内,地图将由 MapFragment对象或 MapView 对象表示。
GoogleMap自动处理下列操作:
- 连接到 Google 地图服务
- 下载地图图块。
- 在设备屏幕上显示图块。
- 显示如平移和缩放等各类控件。
- 通过移动和缩放地图响应平移和缩放手势
除了这些自动操作外,您还可以通过该 API 的对象和方法控制地图的行为。 例如,GoogleMap具有可响应地图上点击动作和触摸手势的回调方法。 您还可以利用向GoogleMap提供的对象在地图上设置标记图标以及为其添加叠层。
MapFragment
MapFragment是 Android Fragment类的一个子类,用于在 AndroidFragment 中放置地图。 MapFragment对象充当地图容器,并提供对 GoogleMap 对象的访问权。
与 View 不同,Fragment 表示的是 Activity 中的一种行为或用户界面的某一部分。您可以将多个 Fragment 组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个 Fragment。请参阅有关Fragment的 Android 文档,以了解更多信息。
MapView
MapView是 AndroidView类的一个子类, 用于在 Android View 中放置地图。 View 表示屏幕的某个矩形区域, 是 Android 应用和小工具的基本构建基块。 MapView 与 MapFr