Google Map知识

来源:互联网 发布:西班牙语发音软件 编辑:程序博客网 时间:2024/06/11 20:24

5.控制地图

修改上一节的activity_main.xml布局文件,核心代码如下:

01   <fragment xmlns:android="http://schemas.android.com/apk/res/android"

02       xmlns:map="http://schemas.android.com/apk/res-auto"

03       ...

04       class="com.google.android.gms.maps.SupportMapFragment"

05       map:cameraBearing="112.5"

06       map:cameraTargetLat="-33.796923"

07       map:cameraTargetLng="150.922433"

08       map:cameraTilt="30"

09       map:cameraZoom="13"

10       map:mapType="normal"

11       map:uiCompass="false"

12       map:uiRotateGestures="true"

13       map:uiScrollGestures="false"

14       map:uiTiltGestures="true"

15       map:uiZoomControls="false"

16       map:uiZoomGestures="true" />

代码解读

属性说明:

l  cameraBearing:基准线设置。

l  cameraTargetLat:初始定位的纬度。

l  cameraTargetLng:初始定位的经度。

l  cameraTilt:设置地图卫星视角。

l  cameraZoom:地图缩放级别,跟定位的精确度有关。

l  map:mapType:设置地图类型。

l  uiZoomControls,uiCompass:设置缩放控件,指南针控件是否显示。

l  uiZoomGestures,uiScrollGestures,uiRotateGestures,uiTiltGestures:手势的设置,包括缩放手势,滑动手势,旋转手势,和倾斜手势。

l  zOrderOnTop:控制子视图是否可以覆盖在窗口之上。

l  useViewLifecycle:控制Map视图的生命周期和Fragment的生命周期绑定。

修改MainActivity,核心代码如下:

01   public class MainActivity extends Activity {

02       privateGoogleMap mMap;

03       private MapViewmMapView;

04    

05       @Override

06       protected voidonCreate(Bundle savedInstanceState) {

07           super.onCreate(savedInstanceState);

08           GoogleMapOptions options = newGoogleMapOptions();

09           options.mapType(GoogleMap.MAP_TYPE_NORMAL);

10           options.camera(new CameraPosition(

11                   newLatLng(32.127084,118.937159), 14, 0, (float)112.5));

12           mMapView =new MapView(this, options);

13           mMapView.setLayoutParams(

14                   newLayoutParams(LayoutParams.MATCH_PARENT,

15                                       LayoutParams.MATCH_PARENT));

16           mMapView.onCreate(savedInstanceState);

17           setContentView(mMapView);

18           mMap =mMapView.getMap();

19           mMap.addMarker(newMarkerOptions().position(new LatLng(32.127084,

20                   118.937159)).title("南京信息职业技术学院附近"));

21           UiSettingsus = mMap.getUiSettings();

22           us.setZoomControlsEnabled(false);

23           us.setZoomGesturesEnabled(true);

24           us.setScrollGesturesEnabled(true);

25           us.setCompassEnabled(false);

26           us.setRotateGesturesEnabled(true);

27           us.setTiltGesturesEnabled(true);

28           

29       }

30       

31       ...

32   }

运行效果如图9-13所示。

图9‑13 添加了标记的地图

6.地图的种类

地图一共有5种类型:

l  Normal:典型的地图,此种地图类型是平常使用最多、最广的类型。

l  Hybrid:混合卫星图及道路地图,该种地图类型除了显示卫星图外,还标记了地名。

l  Satellite:卫星照片。

l  Terrain:地形图。

l  None:什么都没有。

通常使用如下方式改变地图的类型:

01   GoogleMap mMap = ((MapFragment)getFragmentManager()

02           .findFragmentById(R.id.map)).getMap();

03   mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

对于MapView控件,可以分别通过方法setTraffic(true)、setStreetView(true)和setSatellite(true)来设置地图的交通模式、街景模式和卫星模式。并通过MapView的getZoomControls()方法设置ZoomControls控件的服务对象。如果没有在布局中为ZoomControls设置布局,也可以添加如下代码进行设置:

01   mapView.setBuiltInZoomControls(true);

02   mapView.invalidate();

7.标记地图

标记(Marker)用来标记地图上的某一个地点,可以自定义标记的颜色或图示。标记可以定义点击事件,如果将MarkerOptions的draggable属性设置为true,即可以使得使用者在长按此标记后移动它。

建立标记的方法是使用MarkerOptions类,使用LatLng类可以用于设置标记的经纬度,代码如下:

01   MarkerOptions markerOpt = new MarkerOptions();

02   markerOpt.position(new LatLng(纬度值, 经度值));

03   markerOpt.title("标记地点");

04   markerOpt.draggable(true);

05   mMap.addMarker(markerOpt);

也可以根据需要自定义标记的属性:

l  Position(必要的):使用LatLng 类來设定位置,该属性是唯一的必须要设定的属性。

l  Title:当用户点击标记时显示的标记的标题信息。

l  Snippet:额外的文字,显示在标题信息的下方。

l  Draggable:是否可以允许用户移动标记,true:可移动;false:不可移动。

l  Visible:是否显示标记,true:显示;false:隐藏。

l  Anchor:图片上的一个点,用来定位到经纬度坐标,默认为图片底边的中间位置。取值范围为:左上角(0.0,0.0)到右下角(1.0, 1.0)。

l  Icon:图示,被放置在原标记的相同位置,只有第一次建立标记时可以使用图示,一旦使用之后不能任意更换。

0 0