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

(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. composer 安装依赖缓慢,查看 composer 的详细执行日志

    在 windows WSL 上安装 composer 依赖 composer install 发现执行异常缓慢,怀疑没有走国内的镜像,而是直接访问的 github. 需要能看到 composer 的执 ...

  2. oracle表分区的,分区操作,分区查询,子分区查询

    一.摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择. 表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. ...

  3. bootstrap之排版样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. thinkphp搭建后台品字形框架页面

    页面分为三个部分 head,left,right共同组成了index 在indexController中 function Index(){ $this->display(); } //展现后腰 ...

  5. python全栈开发day21-2 几个装饰器总结

    1 @property 将一个方法伪装成属性 2.@propertty @f.setter 设置伪装成方法的属性 3.@propertty @f.deleter 删除一个伪装成方法的属性. class ...

  6. Codeforces Round #467 (Div. 2) E -Lock Puzzle

    Lock Puzzle 题目大意:给你两个字符串一个s,一个t,长度<=2000,要求你进行小于等于6100次的shift操作,将s变成t, shift(x)表示将字符串的最后x个字符翻转后放到 ...

  7. 8.Django-form组件

    1.form组件的校验功能 文件formsdemo models from django.db import models # Create your models here. class UserI ...

  8. 069 Hue协作框架

    一:介绍 1.官网 官网:http://gethue.com/ 下载:http://archive.cloudera.com/cdh5/cdh/5/,只能在这里下载,不是Apache的 手册:http ...

  9. linux shell cat 命令

    cat:查看文件的内容.连接文件.创建一个或多个文件和重定向输出到终端或文件  用法:cat [选项] [文件] 1. $ cat hello.txt 显示hello.txt文本文件中的内容 2. $ ...

  10. Unity 之 中文乱码

    更改 C#脚本的编码格式: 文件 -> 高级保存选项 -> Unicode