上一章中我们已经完成定位功能,这一章向大家介绍一下常用的方法及常量属性的意思。

(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

定位结果:

国家测绘局标准

  1. new LocationClientOption().setCoorType ("gcj02")

百度经纬度标准

  1. new LocationClientOption().setCoorType ("bd09ll")

百度墨卡托标准

  1. 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/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:
 

AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性的更多相关文章

  1. AndroidStudio下加入百度地图的使用(一)——环境搭建

    AndroidStudio下加入百度地图的使用(一)--环境搭建 最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新 ...

  2. AndroidStudio下加入百度地图的使用(四)——路线规划

    上一章中我们已经完成了API常用的方法及常量属性的使用,这一章向大家介绍一下地图的重要功能-路线规划. (1) 定义API中的路线查询类: RoutePlanSearch mSearch = Rout ...

  3. 百度地图一套JS API,非常实用

    百度地图一套JS API,非常实用 import mapStyleJson from "./mapStyleJson"; import $ from "jquery&qu ...

  4. 【转】Android Studio下加入百度地图的使用 (一)——环境搭建

    最近有学 生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在 AndroidStudio中使用还是存在一些 ...

  5. Android Studio下加入百度地图的使用 (一)——环境搭建

    最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳 ...

  6. Android下 使用百度地图sdk

    百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口.可以使用该套 SDK开发适用于Android系 ...

  7. Android Studio下加入百度地图的使用(二)——定位服务

    上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 & ...

  8. Android 百度地图开发(三)

    实现比例尺功能和替换自带的缩放组件 ScaleView是比例尺控件.ZoomControlView是缩放控件,MainActivity就是我们的主界面了 先看下ZoomControlView类.代码例 ...

  9. Chrome下使用百度地图报错Cannot read property 'minZoom' of undefined

    问题:工作中在Google chome下面的js console里面测试百度地图API var map = new BMap.Map("container"); map.cente ...

随机推荐

  1. RzPageControl 关闭按钮

  2. cf220B莫队

    用莫队比直接做快了很多.. #include<iostream> #include<cstring> #include<cstdio> #include<cm ...

  3. Jmeter NonGUI模式

    一般情况下我们都是在NonGUI模式下运行jmeter.这样做有两个好处 节省系统资源,能够产生更大的负载 可以通过命令行参数对测试场景进行更精细的配置 示例 创建luzhi.jmx脚本 jmeter ...

  4. python 全栈开发,Day117(popup,Model类的继承,crm业务开发)

    昨日内容回顾 第一部分:权限相关 1. 权限基本流程 用户登录成功后获取权限信息,将[权限和菜单]信息写入到session. 以后用户在来访问,在中间件中进行权限校验. 为了提升用户体验友好度,在后台 ...

  5. BZOJ2669 [cqoi2012]局部极小值 状压DP 容斥原理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2669 题意概括 有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次.如果一个格子比所 ...

  6. JavaWeb 之 清理错误的无奈之举

    1. Project -> Clean 2. 清空浏览器缓存 (得先按了F2,出了调试窗口,才可以右键它) 3. 右键项目 -> Maven -> Update -> Forc ...

  7. android和java以太坊开发区块链应用使用web3j类库

    如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建.钱包创建.交易转账,交易与状态.智能合约开发与交互.过滤器和 ...

  8. 匿名函数 lambda

    lambda 参数 :  程序体 1. filter 与匿名函数结合运用 2. map与匿名函数结合运用

  9. STL中实现 iterator trail 的编程技巧

    STL中实现 iterator trail 的编程技巧 <泛型编程和 STL>笔记及思考. 这篇文章主要记录在 STL 中迭代器设计过程中出现的编程技巧,围绕的 STL 主题为 (迭代器特 ...

  10. ISO9000和CMM

    ISO9000和CMM,谁更适合软件开发? ISO9000 和 CMM 是国际上通用的软件质量评估和管理方法.二者有很多相似之处,它们的实施都可以改变软件开发的不规范.文档不齐.维护跟不上.质量漏洞多 ...