AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性
上一章中我们已经完成定位功能,这一章向大家介绍一下常用的方法及常量属性的意思。
(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/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

AndroidStudio下加入百度地图的使用 (三)——API基本方法及常量属性的更多相关文章
- AndroidStudio下加入百度地图的使用(一)——环境搭建
AndroidStudio下加入百度地图的使用(一)--环境搭建 最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新 ...
- AndroidStudio下加入百度地图的使用(四)——路线规划
上一章中我们已经完成了API常用的方法及常量属性的使用,这一章向大家介绍一下地图的重要功能-路线规划. (1) 定义API中的路线查询类: RoutePlanSearch mSearch = Rout ...
- 百度地图一套JS API,非常实用
百度地图一套JS API,非常实用 import mapStyleJson from "./mapStyleJson"; import $ from "jquery&qu ...
- 【转】Android Studio下加入百度地图的使用 (一)——环境搭建
最近有学 生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在 AndroidStudio中使用还是存在一些 ...
- Android Studio下加入百度地图的使用 (一)——环境搭建
最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳 ...
- Android下 使用百度地图sdk
百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口.可以使用该套 SDK开发适用于Android系 ...
- Android Studio下加入百度地图的使用(二)——定位服务
上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 & ...
- Android 百度地图开发(三)
实现比例尺功能和替换自带的缩放组件 ScaleView是比例尺控件.ZoomControlView是缩放控件,MainActivity就是我们的主界面了 先看下ZoomControlView类.代码例 ...
- Chrome下使用百度地图报错Cannot read property 'minZoom' of undefined
问题:工作中在Google chome下面的js console里面测试百度地图API var map = new BMap.Map("container"); map.cente ...
随机推荐
- RzPageControl 关闭按钮
- Codeforces 448C Painting Fence(分治法)
题目链接:http://codeforces.com/contest/448/problem/C 题目大意:n个1* a [ i ] 的木板,把他们立起来,变成每个木板宽为1长为 a [ i ] 的栅 ...
- poj2114 树分治(点分治)
poj1741板子套一套,统计对数的方式改一下,可以在O(n)时间内统计对数 最后不要忘记输出最后的“.” /* 给定一棵边权树,是否存在一条路径使得其长度为恰好为x 把1741的板子改为求点对之间的 ...
- vtiger二次开发
搞了快两个星期的vtiger,慢慢的摸索到了一些东西 数据库相当的复杂,已有的模块我只是分析了下页面的加载,方法的调用 大部分时间在研究怎么添加新的功能模块,今天才知道模块可以通过输入命令的方式来添加 ...
- Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- Codeforces 739C Alyona and towers 线段树
Alyona and towers 这个题写起来真的要人命... 我们发现一个区间被加上一个d的时候, 内部的结构是不变的, 改变的只是左端点右端点的值, 这样就能区间合并了. 如果用差分的话会简单一 ...
- BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1878 题意概括 给出一个长度为n的序列,用m次询问,问区间Li~Ri中有多少种不同的数. 0< ...
- java面试题大全-基础方面 答案自己写
Java基础方面: 1.作用域public,private,protected,以及不写时的区别 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类, ...
- hdu 6185 递推+【矩阵快速幂】
<题目链接> <转载于 >>> > 题目大意: 让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠.答案 ...
- windows下redis安装和配置
windows下redis安装和配置 redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数 ...