上一章中我们已经完成定位功能,这一章向大家介绍一下常用的方法及常量属性的意思。
(1) 手势方法
缩放: setZoomGesturesEnabled()
俯视: setOverlookingGesturesEnabled()
旋转:setRotateGesturesEnabled()
平移: setScrollGesturesEnabled()
(2) 地图模式方法
setMapType(常量)
常量1:普通地图BaiduMap. MAP_TYPE_NORMAL
常量2:卫星地图: BaiduMap.MAP_TYPE_SATELLITE
开启交通模式:mBaiduMap.setTrafficEnabled(true)
(3) 定位设置中用到的方法及常量
定位精度: new LocationClientOption().setLocationMode(常量)
常量1:高精度模式(GPS+Wifi+基站) LocationMode.Hight_Accuracy
常量2:低功耗模式(Wifi+基站) LocationMode. Battery_Saving
常量3:仅设备模式(GPS) LocationMode. Device_Sensors
定位结果:
国家测绘局标准
- new LocationClientOption().setCoorType ("gcj02")
百度经纬度标准
- new LocationClientOption().setCoorType ("bd09ll")
百度墨卡托标准
- new LocationClientOption().setCoorType ("bd09")
效果:
下面我们来具体使用一下
第一步:在xml文件中加入服务的定义
这是SDK中自带的服务,只需如此定义即可
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > <intent-filter> <action android:name="com.baidu.location.service_v2.2" > </action> </intent-filter></service>
第二步: 在上一章的布局中添加控件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <CheckBox android:id="@+id/zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:onClick="setZoomEnable" android:text="缩放" /> <CheckBox android:id="@+id/scroll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:onClick="setScrollEnable" android:text="平移" android:layout_below="@+id/rotate" android:layout_toRightOf="@+id/compass" android:layout_toEndOf="@+id/compass" /> <CheckBox android:id="@+id/compass" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:checked="true" android:onClick="setCompassEnable" android:text="指南针" android:layout_below="@+id/zoom" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <CheckBox android:id="@+id/rotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:checked="true" android:onClick="setRotateEnable" android:text="旋转" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/zoom" android:layout_toEndOf="@+id/zoom" /> <CheckBox android:id="@+id/overlook" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:checked="true" android:onClick="setOverlookEnable" android:text="俯视" android:layout_above="@+id/compass" android:layout_toRightOf="@+id/rotate" android:layout_toEndOf="@+id/rotate" /> <com.baidu.mapapi.map.MapView android:id="@+id/MyMpView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:clickable="true" android:layout_below="@+id/scroll" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" /><RadioGroup android:id="@+id/radioButtonGroup" android:layout_width="wrap_content" android:orientation="horizontal" android:layout_height="wrap_content" android:layout_below="@+id/overlook" android:layout_toRightOf="@+id/scroll" android:layout_toEndOf="@+id/scroll"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通" android:id="@+id/mapNormal" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="卫星" android:id="@+id/mapSate" /></RadioGroup> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="交通" android:id="@+id/mapTraffic" android:onClick="setTrafficMap" android:layout_alignTop="@+id/radioButtonGroup" android:layout_toRightOf="@+id/radioButtonGroup" android:layout_toEndOf="@+id/radioButtonGroup" /></RelativeLayout>
第三步: 在监听事件方法中设置地图的使用,Activity完整代码
package com.jerehedu.administrator.baidumapapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.CheckBox;import android.widget.RadioGroup;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfigeration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.UiSettings;import com.baidu.mapapi.model.LatLng;public class UISettingDemo extends Activity { /** * MapView 是地图主控件 */ private MapView mMapView; private BaiduMap mBaiduMap; private UiSettings mUiSettings; private RadioGroup radioGroup; private CheckBox trafficMap; private boolean firstLocation; private LocationClient locationClient; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_uisetting); mMapView = (MapView) findViewById(R.id.MyMpView); radioGroup =(RadioGroup)findViewById(R.id.radioButtonGroup); trafficMap =(CheckBox)findViewById(R.id.mapTraffic); mBaiduMap = mMapView.getMap(); mUiSettings = mBaiduMap.getUiSettings(); //overlook 设置地图俯仰角 MapStatus ms = new MapStatus.Builder().overlook(-30).build(); MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms); mBaiduMap.animateMapStatus(u, 1000); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.mapNormal: //普通地图 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); break; case R.id.mapSate: //卫星地图 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); break; } } }); locationSet(); } /** * 是否启用缩放手势 * * @param v */ public void setZoomEnable(View v) { mUiSettings.setZoomGesturesEnabled(((CheckBox) v).isChecked()); } /** * 是否启用平移手势 * * @param v */ public void setScrollEnable(View v) { mUiSettings.setScrollGesturesEnabled(((CheckBox) v).isChecked()); } /** * 是否启用旋转手势 * * @param v */ public void setRotateEnable(View v) { mUiSettings.setRotateGesturesEnabled(((CheckBox) v).isChecked()); } /** * 是否启用俯视手势 * * @param v */ public void setOverlookEnable(View v) { mUiSettings.setOverlookingGesturesEnabled(((CheckBox) v).isChecked()); } /** * 交通地图模式 * * @param v */ public void setTrafficMap(View v){ if (trafficMap.isChecked()) { mBaiduMap.setTrafficEnabled(true); } else { mBaiduMap.setTrafficEnabled(false); } } /** * 是否启用指南针图层 * * @param v */ public void setCompassEnable(View v) { mUiSettings.setCompassEnabled(((CheckBox) v).isChecked()); } public void locationSet(){ mBaiduMap = mMapView.getMap(); MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15f); mBaiduMap.setMapStatus(msu); // 定位初始化 locationClient = new LocationClient(this); firstLocation =true; // 设置定位的相关配置 LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); option.setOpenGps(true); option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); locationClient.setLocOption(option); // 设置自定义图标 BitmapDescriptor myMarker = BitmapDescriptorFactory .fromResource(R.drawable.navi_map); MyLocationConfigeration config = new MyLocationConfigeration( MyLocationConfigeration.LocationMode.FOLLOWING, true, myMarker); locationClient.registerLocationListener(new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) return; // 构造定位数据 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); // 设置定位数据 mBaiduMap.setMyLocationData(locData); // 第一次定位时,将地图位置移动到当前位置 if (firstLocation) { firstLocation = false; LatLng xy = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(xy); mBaiduMap.animateMapStatus(status); } } }); } @Override protected void onStart() { // 如果要显示位置图标,必须先开启图层定位 mBaiduMap.setMyLocationEnabled(true); if (!locationClient.isStarted()) { locationClient.start(); } super.onStart(); } @Override protected void onStop() { // 关闭图层定位 mBaiduMap.setMyLocationEnabled(false); locationClient.stop(); super.onStop(); } @Override protected void onPause() { // MapView的生命周期与Activity同步, // 当activity挂起时需调用MapView.onPause() mMapView.onPause(); super.onPause(); } @Override protected void onResume() { // MapView的生命周期与Activity同步, // 当activity恢复时需调用MapView.onResume() mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // MapView的生命周期与Activity同步, // 当activity销毁时需调用MapView.destroy() mMapView.onDestroy(); super.onDestroy(); }}
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询: