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 ...
随机推荐
- canvas图像保存
很多时候绘制完成的图片需要保存,那么我们就可以使用到Canvas API来完成这最后一步! Canvas API使用toDataURL方法把绘画的状态输出到一个data URL中然后重新装载,然后我们 ...
- Android的简单应用(二)——使用dispatchKeyEvent双击退出程序
原文:https://www.cnblogs.com/cpacm/archive/2014/11/10/4087070.html Android系统按键操作最先是在dispatchKeyEvent ...
- Git强制更新本地库和冲突解决
1.You have not concluded your merge. (MERGE_HEAD exists) 本地有修改和提交,如何强制用远程的库更新.出现这种情况一般是git本地有commit, ...
- win10定时执行php脚本
转自http://www.cnblogs.com/wenhainan/p/6962089.html 第一步:确认windows上是否配置好了php环境变量,我用xampp安装的lamp环境,默认已经配 ...
- Mahout介绍和简单应用
Mahout学习(主要学习内容是Mahout中推荐部分的ItemCF.UserCF.Hadoop集群部署运行) 1.Mahout是什么? Mahout是一个算法库,集成了很多算法. Apache Ma ...
- 001 LRU-缓存淘汰算法
1.介绍 LRU是LeastRecentlyUsed近期最少使用算法.内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,Oracle会根据哪些数据属于LRU而将其移出内存而 ...
- JVM GC-----3、垃圾标记算法(二)
在上一篇文章中,介绍了在GC机制中,GC是以什么标准判定对象可以被标记的,以及最有效最常用的可达性分析法.今天介绍另外一种非常常用的标记算法,它的应用面也相当广泛.这就是:引用计数法 Referenc ...
- Loader监听数据源的变化
步骤: 1.新建一个继承SQLiteOpenHelper的帮助类 2.在MainActivity中定义LoaderManager和SimpleCursorAdapter 3.按顺序重写如下方法:ini ...
- python爬虫积累(一)--------selenium+python+PhantomJS的使用
最近按公司要求,爬取相关网站时,发现没有找到js包的地址,我就采用selenium来爬取信息,相关实战链接:python爬虫实战(一)--------中国作物种质信息网 一.Selenium介绍 Se ...
- canvas三角函数模拟水波效果
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...