在本文中主要介绍百度地图UI控制功能,即控制地图是否有缩放、平移、双击放大、旋转、俯视的功能以及控制是否显示内置缩放组件、指南针位置等。在文中采用标签监听使每个控制功能的方法见名知义,代码原型来源百度demo,代码如下:

Activity:

  1. package com.home;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.CheckBox;
  7. import android.widget.RadioButton;
  8.  
  9. import com.baidu.mapapi.BMapManager;
  10. import com.baidu.mapapi.map.MapController;
  11. import com.baidu.mapapi.map.MapView;
  12. import com.baidu.platform.comapi.basestruct.GeoPoint;
  13.  
  14. /**
  15. * 演示地图UI控制功能
  16. */
  17. public class UISettingActivity extends Activity {
  18.  
  19. /**
  20. * MapView 是地图主控件
  21. */
  22. private MapView mMapView = null;
  23. /**
  24. * 用MapController完成地图控制
  25. */
  26. private MapController mMapController = null;
  27.  
  28. @Override
  29. public void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. /**
  32. * 使用地图sdk前需先初始化BMapManager. BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,
  33. * 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁
  34. */
  35. DemoApplication app = (DemoApplication) this.getApplication();
  36. if (app.mBMapManager == null) {
  37. app.mBMapManager = new BMapManager(this);
  38. /**
  39. * 如果BMapManager没有初始化则初始化BMapManager
  40. */
  41. app.mBMapManager.init(DemoApplication.strKey,
  42. new DemoApplication.MyGeneralListener());
  43. }
  44. /**
  45. * 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后
  46. */
  47. setContentView(R.layout.uisetting_main);
  48. mMapView = (MapView) findViewById(R.id.bmapView);
  49. /**
  50. * 获取地图控制器
  51. */
  52. mMapController = mMapView.getController();
  53. /**
  54. * 设置地图是否响应点击事件
  55. */
  56. mMapController.enableClick(true);
  57. /**
  58. * 设置地图缩放级别
  59. */
  60. mMapController.setZoom(12);
  61. /**
  62. * 设置地图俯角
  63. */
  64. mMapController.setOverlooking(-30);
  65. /**
  66. * 将地图移动至天安门
  67. * 使用百度经纬度坐标,可以通过http://api.map.baidu.com/lbsapi/getpoint/index
  68. * .html查询地理坐标 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至mapapi@baidu.com申请坐标转换接口
  69. */
  70. double cLat = 39.945;
  71. double cLon = 116.404;
  72. GeoPoint p = new GeoPoint((int) (cLat * 1E6), (int) (cLon * 1E6));
  73. mMapController.setCenter(p);
  74. }
  75.  
  76. /**
  77. * 是否启用缩放手势
  78. *
  79. * @param v
  80. */
  81. public void setZoomEnable(View v) {
  82. mMapController.setZoomGesturesEnabled(((CheckBox) v).isChecked());
  83. }
  84.  
  85. /**
  86. * 是否启用平移手势
  87. *
  88. * @param v
  89. */
  90. public void setScrollEnable(View v) {
  91. mMapController.setScrollGesturesEnabled(((CheckBox) v).isChecked());
  92. }
  93.  
  94. /**
  95. * 是否启用双击放大
  96. *
  97. * @param v
  98. */
  99. public void setDoubleClickEnable(View v) {
  100. mMapView.setDoubleClickZooming(((CheckBox) v).isChecked());
  101. }
  102.  
  103. /**
  104. * 是否启用旋转手势
  105. *
  106. * @param v
  107. */
  108. public void setRotateEnable(View v) {
  109. mMapController.setRotationGesturesEnabled(((CheckBox) v).isChecked());
  110. }
  111.  
  112. /**
  113. * 是否启用俯视手势
  114. *
  115. * @param v
  116. */
  117. public void setOverlookEnable(View v) {
  118. mMapController
  119. .setOverlookingGesturesEnabled(((CheckBox) v).isChecked());
  120. }
  121.  
  122. /**
  123. * 是否显示内置绽放控件
  124. *
  125. * @param v
  126. */
  127. public void setBuiltInZoomControllEnable(View v) {
  128. mMapView.setBuiltInZoomControls(((CheckBox) v).isChecked());
  129. }
  130.  
  131. /**
  132. * 设置指南针位置,指南针在3D模式下自动显现
  133. *
  134. * @param view
  135. */
  136. public void setCompassLocation(View view) {
  137. boolean checked = ((RadioButton) view).isChecked();
  138. switch (view.getId()) {
  139. case R.id.lefttop:
  140. if (checked)
  141. // 设置指南针显示在左上角
  142. mMapController.setCompassMargin(100, 100);
  143. break;
  144. case R.id.righttop:
  145. if (checked)
  146. mMapController.setCompassMargin(mMapView.getWidth() - 100, 100);
  147. break;
  148. }
  149. }
  150.  
  151. @Override
  152. protected void onPause() {
  153. /**
  154. * MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
  155. */
  156. mMapView.onPause();
  157. super.onPause();
  158. }
  159.  
  160. @Override
  161. protected void onResume() {
  162. /**
  163. * MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
  164. */
  165. mMapView.onResume();
  166. super.onResume();
  167. }
  168.  
  169. @Override
  170. protected void onDestroy() {
  171. /**
  172. * MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
  173. */
  174. mMapView.destroy();
  175. super.onDestroy();
  176. }
  177.  
  178. @Override
  179. protected void onSaveInstanceState(Bundle outState) {
  180. super.onSaveInstanceState(outState);
  181. mMapView.onSaveInstanceState(outState);
  182.  
  183. }
  184.  
  185. @Override
  186. protected void onRestoreInstanceState(Bundle savedInstanceState) {
  187. super.onRestoreInstanceState(savedInstanceState);
  188. mMapView.onRestoreInstanceState(savedInstanceState);
  189. }
  190.  
  191. }

布局XML:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6.  
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="50dip"
  10. android:orientation="horizontal" >
  11.  
  12. <CheckBox
  13. android:id="@+id/zoom"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_weight="1"
  17. android:checked="true"
  18. android:onClick="setZoomEnable"
  19. android:text="缩放" />
  20.  
  21. <CheckBox
  22. android:id="@+id/scroll"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_weight="1"
  26. android:checked="true"
  27. android:onClick="setScrollEnable"
  28. android:text="平移" />
  29.  
  30. <CheckBox
  31. android:id="@+id/doubleClick"
  32. android:layout_width="wrap_content"
  33. android:layout_height="wrap_content"
  34. android:layout_weight="1"
  35. android:checked="true"
  36. android:onClick="setDoubleClickEnable"
  37. android:text="双击放大" />
  38. </LinearLayout>
  39.  
  40. <LinearLayout
  41. android:layout_width="match_parent"
  42. android:layout_height="50dip"
  43. android:orientation="horizontal" >
  44.  
  45. <CheckBox
  46. android:id="@+id/rotate"
  47. android:layout_width="wrap_content"
  48. android:layout_height="wrap_content"
  49. android:layout_weight="1"
  50. android:checked="true"
  51. android:onClick="setRotateEnable"
  52. android:text="旋转" />
  53.  
  54. <CheckBox
  55. android:id="@+id/overlook"
  56. android:layout_width="wrap_content"
  57. android:layout_height="wrap_content"
  58. android:layout_weight="1"
  59. android:checked="true"
  60. android:onClick="setOverlookEnable"
  61. android:text="俯视" />
  62.  
  63. <CheckBox
  64. android:id="@+id/zoomControl"
  65. android:layout_width="wrap_content"
  66. android:layout_height="wrap_content"
  67. android:layout_weight="1"
  68. android:checked="false"
  69. android:onClick="setBuiltInZoomControllEnable"
  70. android:text="缩放控件" />
  71. </LinearLayout>
  72.  
  73. <LinearLayout
  74. android:layout_width="match_parent"
  75. android:layout_height="50dip"
  76. android:orientation="horizontal" >
  77.  
  78. <TextView
  79. android:layout_width="wrap_content"
  80. android:layout_height="wrap_content"
  81. android:layout_weight="1"
  82. android:paddingTop="10dip"
  83. android:text="指南针位置" />
  84.  
  85. <RadioGroup
  86. android:id="@+id/RadioGroup"
  87. android:layout_width="wrap_content"
  88. android:layout_height="wrap_content"
  89. android:layout_weight="1"
  90. android:orientation="horizontal"
  91. android:text="指南针位置" >
  92.  
  93. <RadioButton
  94. android:id="@+id/lefttop"
  95. android:layout_width="wrap_content"
  96. android:layout_height="wrap_content"
  97. android:checked="true"
  98. android:onClick="setCompassLocation"
  99. android:text="左上角" />
  100.  
  101. <RadioButton
  102. android:id="@+id/righttop"
  103. android:layout_width="wrap_content"
  104. android:layout_height="wrap_content"
  105. android:onClick="setCompassLocation"
  106. android:text="右上角" />
  107. </RadioGroup>
  108. </LinearLayout>
  109.  
  110. <com.baidu.mapapi.map.MapView
  111. android:id="@+id/bmapView"
  112. android:layout_width="match_parent"
  113. android:layout_height="wrap_content"
  114. android:clickable="true" />
  115.  
  116. </LinearLayout>

Application类和Manifest同前文。
附上图片效果:

百度地图之UI控制的更多相关文章

  1. Android学习笔记之使用百度地图实现地图控制

    PS:吾之荣耀,离别已久. 学习内容: 1.实现地图控制. 2.百度地图开发的一些细节     1.实现地图控制:   这一篇主要写在百度地图上添加一些其他控制.上一篇书写了覆盖物的添加,地理编码和反 ...

  2. Android百度地图开发03之地图控制 + 定位

    前两篇关于百度地图的blog写的是,一些基本图层的展示 和 覆盖物的添加+地理编码和反地理编码. 接下来,这篇blog主要说一些关于地图控制方面的内容和定位功能. 百度地图提供的关于地图的操作主要有: ...

  3. [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)

    前言:基于百度地图javascript版本开发,百度地图中所用的key已承诺仅用于测试,不用于商业用途 注:本文所有代码可以到github上进行下载,github地址:http://map.eguid ...

  4. [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码

    MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...

  5. geoserver控制服务访问权限-类似百度地图的key

    目录 缘起 可行性分析 如何实现key验证访问 如何控制key能访问哪些地图服务? 如何实现服务器ip白名单 流程梳理 申请key 访问地图 实施步骤 拦截器设置 配置key验证规则 配置服务拦截规则 ...

  6. 基于Fragment的百度地图框架的使用

    博客:http://blog.csdn.net/developer_jiangqq (一)基本介绍(Fragment和SupportMapFragment): Fragment的使用现在安卓APP开发 ...

  7. 百度地图api简单使用方法

    百度地图API的使用方法   百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html&g ...

  8. iOS开发之引用百度地图SDK(一)-----------SDK开发指南

    (void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用 ...

  9. 百度地图API的使用方法

    百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head& ...

随机推荐

  1. C#中对文件的操作

    详细介绍参考:http://blog.csdn.net/wangyue4/article/details/4616801 源码举例: public class FileSystemManager { ...

  2. UML看书笔记1:主体思想

    对象设计需要解决的三大问题:      1.把“现实世界”映射到“对象世界”      2.从“对象世界”描述“现实世界”      3.验证“对象世界”是否反映了“现实世界” 现实世界与我们的对象世 ...

  3. WCF技术剖析之十七:消息(Message)详解(中篇)

    原文:WCF技术剖析之十七:消息(Message)详解(中篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在上篇中 ...

  4. 用lisp来让计算机学会写作

    大部分的代码.思路参考了<Ansi Common Lisp>P138~P141. 问题:给一篇英文文本,如何让计算机依据此文本而生成随机但可读的文本.如: |Venture| The Na ...

  5. 3.跟我学solr---使用solrj加入索引

    上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server.它对外提供类似于 Web-service 的 API 接口. 用户能够通过 ht ...

  6. Windows通过远程桌面访问Ubuntu

    关于Windows通过远程桌面访问Ubuntu 问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端   1.  安装所需软件包   sudoapt-get install x ...

  7. JavaScript 进阶(二)变量作用域

    局部变量陷阱 先看一段代码: function foo() { var a = "hello" b = "world" return a + b; } 这个函数 ...

  8. CSDN改版问题多多

    刚刚上CSDN,发现改版了,推出C币功能. 然后看了2分钟,发现了一个Bug,于是准备提交到论坛.但是--居然提交Bug的论坛也出现Bug.印象中,每次CSDN更新版本号Bug都非常多,这,作为程序猿 ...

  9. C++ 观察者模式样例

    C++ 观察者模式样例 #include <iostream> #include <set> #include <string> using namespace s ...

  10. appium 真机测试问题 出现 instruments crashed on startup

    1.appium 真机测试的时候 instruments crashed on startup,必须在真机上打开UI Automation 在设置里: Developer->Enable UI ...