依赖包:
添加 Android 百度依赖包:

1 key:
<!-- 开发者 key -->
  1. <meta-data
  2. android:name="com.baidu.lbsapi.API_KEY"
  3. android:value="申请的Key"/>


2 权限:
  1. <!--baimap权限-->
  2. <uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>
  3. <uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/>
  4. <uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/>
  5. <uses-permissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
  6. <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
  7. <uses-permissionandroid:name="android.permission.INTERNET"/>
  8. <uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/>
  9. <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
  10. <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
  11. <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
  12. <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  13. <uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/>
  14. <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>
  15. <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>


3 代码:
  1. packagecom.example.loveyoulmap;
  2. importjava.util.List;
  3. importandroid.app.Activity;
  4. importandroid.graphics.Color;
  5. importandroid.os.Bundle;
  6. importandroid.util.Log;
  7. importandroid.view.Menu;
  8. importandroid.webkit.WebSettings;
  9. importandroid.webkit.WebView;
  10. importandroid.webkit.WebViewClient;
  11. importandroid.widget.Button;
  12. importandroid.widget.Toast;
  13. importcom.baidu.mapapi.SDKInitializer;
  14. importcom.baidu.mapapi.map.BaiduMap;
  15. importcom.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
  16. importcom.baidu.mapapi.map.BitmapDescriptor;
  17. importcom.baidu.mapapi.map.BitmapDescriptorFactory;
  18. importcom.baidu.mapapi.map.InfoWindow;
  19. importcom.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
  20. importcom.baidu.mapapi.map.MapView;
  21. importcom.baidu.mapapi.map.Marker;
  22. importcom.baidu.mapapi.map.MarkerOptions;
  23. importcom.baidu.mapapi.map.OverlayOptions;
  24. importcom.baidu.mapapi.model.LatLng;
  25. importcom.baidu.mapapi.overlayutil.PoiOverlay;
  26. importcom.baidu.mapapi.search.core.PoiInfo;
  27. importcom.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
  28. importcom.baidu.mapapi.search.poi.PoiCitySearchOption;
  29. importcom.baidu.mapapi.search.poi.PoiDetailResult;
  30. importcom.baidu.mapapi.search.poi.PoiDetailSearchOption;
  31. importcom.baidu.mapapi.search.poi.PoiResult;
  32. importcom.baidu.mapapi.search.poi.PoiSearch;
  33. publicclassMainActivityextendsActivity{
  34. //MapView
  35. privateMapViewmapView;
  36. //百度地图MapView.getMap();
  37. privateBaiduMapbaiduMap;
  38. //Poi搜索
  39. privatePoiSearchpoiSearch;
  40. //webView显示详情
  41. privateWebViewwebView;
  42. @Override
  43. protectedvoidonCreate(BundlesavedInstanceState){
  44. super.onCreate(savedInstanceState);
  45. //去掉标题的显示(就是app最顶上的显示内容!)
  46. requestWindowFeature(1);
  47. //在使用SDK各组件之前初始化context信息,传入ApplicationContext
  48. //注意该方法要再setContentView方法之前实现
  49. SDKInitializer.initialize(getApplicationContext());
  50. setContentView(R.layout.activity_main);
  51. //获取MapView
  52. mapView=(MapView)this.findViewById(R.id.map);
  53. webView=(WebView)this.findViewById(R.id.webview);
  54. //初始化poiSearch对象!
  55. poiSearch=PoiSearch.newInstance();
  56. //获取地图视图:
  57. baiduMap=mapView.getMap();
  58. baiduMap.setTrafficEnabled(true);
  59. //
  60. baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
  61. baiduMap.setMaxAndMinZoomLevel(15,19);
  62. //1创建当前位置的标志
  63. setOnePointToMap();
  64. //2设置为点击事件:
  65. setPointListener();
  66. //3获取兴趣点:搜索服务!
  67. getPoiResourse();
  68. }
  69. /**
  70. *//TODO1创建当前位置的标志
  71. */
  72. privatevoidsetOnePointToMap(){
  73. //2描述其
  74. BitmapDescriptordescriptor=BitmapDescriptorFactory
  75. .fromResource(R.drawable.ic_launcher);
  76. //3位置纬经度
  77. //116.396364,39.916097
  78. LatLnglatLng=newLatLng(39.916097,116.396364);
  79. //1覆盖一层透视的图层!
  80. OverlayOptionsoverlayOptions=newMarkerOptions().title("北京站")
  81. .icon(descriptor).position(latLng);
  82. //向地图添加一个Overlay
  83. baiduMap.addOverlay(overlayOptions);
  84. }
  85. /**
  86. *//TODO2设置当前位置的点击事件弹出视图!
  87. */
  88. privatevoidsetPointListener(){
  89. //baiduMap的覆盖物被点击!触发该事件。
  90. baiduMap.setOnMarkerClickListener(newOnMarkerClickListener(){
  91. @Override
  92. publicbooleanonMarkerClick(Markermarker){
  93. //TODO开启检索:实在点击之后触发的事件。所搜方式:城市内搜索!
  94. poiSearch.searchInCity(newPoiCitySearchOption().keyword("美食")
  95. .city("北京").pageNum(0).pageCapacity(10));
  96. Buttonbtn=newButton(getApplicationContext());
  97. btn.setBackgroundColor(Color.RED);
  98. btn.setText(marker.getTitle());
  99. //btn变成View图片
  100. BitmapDescriptordescriptor=BitmapDescriptorFactory
  101. .fromView(btn);
  102. /**
  103. *弹窗的点击事件:
  104. *-InfoWindow展示的bitmapposition
  105. *-InfoWindow显示的地理位置
  106. *-InfoWindowY轴偏移量listener
  107. *-InfoWindow点击监听者
  108. *InfoWindow点击的时候消失。
  109. **/
  110. InfoWindowinfoWindow=newInfoWindow(descriptor,marker
  111. .getPosition(),-60,newOnInfoWindowClickListener(){
  112. publicvoidonInfoWindowClick(){
  113. //TODOAuto-generatedmethodstub
  114. //当用户点击弹窗触发:
  115. //开启POI检索、开启路径规矩,跳转界面!
  116. //1隐藏弹窗!
  117. baiduMap.hideInfoWindow();
  118. }
  119. });
  120. //2showinfoWindow
  121. baiduMap.showInfoWindow(infoWindow);
  122. returnfalse;
  123. }
  124. });
  125. }
  126. /**
  127. *//3获取兴趣点:
  128. *点击本地的图标的时候开始所搜数据。
  129. *TODO1把兴趣点显示在地图上
  130. * TODO2点击一个兴趣点弹窗显示该点的名字!
  131. */
  132. privatevoidgetPoiResourse(){
  133. //设置poi检索监听者
  134. poiSearch.setOnGetPoiSearchResultListener(
  135. newOnGetPoiSearchResultListener(){
  136. @Override
  137. publicvoidonGetPoiResult(PoiResultarg0){
  138. //TODO获取到兴趣结果数据时触发
  139. //bindtobaidumap
  140. //PoiOverlaypoiOverlay=newPoiOverlay(baiduMap);
  141. //显示所有的兴趣点结果:
  142. MyPoiOvrelypoiOverlay=newMyPoiOvrely(baiduMap);
  143. //MyPoiOvrely实现了newOnMarkerClickListener()所以点击覆盖物的时候会触发事件!
  144. baiduMap.setOnMarkerClickListener(poiOverlay);
  145. poiOverlay.setData(arg0);
  146. poiOverlay.addToMap();
  147. //价格地图缩放至可以显示全部情趣店的级别!
  148. poiOverlay.zoomToSpan();
  149. }
  150. @Override
  151. publicvoidonGetPoiDetailResult(PoiDetailResultarg0){
  152. //TODO但获取兴趣详情时触发
  153. Stringurl=arg0.getDetailUrl();
  154. //设置webView显示的客户端!
  155. webView.getSettings().setJavaScriptEnabled(true);
  156. webView.setScrollBarStyle(0);
  157. WebSettingswebSettings=webView.getSettings();
  158. webSettings.setAllowFileAccess(true);
  159. webSettings.setBuiltInZoomControls(true);
  160. webView.setWebViewClient(newWebViewClient(){
  161. @Override
  162. publicbooleanshouldOverrideUrlLoading(
  163. WebViewview,Stringurl){
  164. //TODOAuto-generatedmethodstub
  165. returnfalse;
  166. }
  167. });
  168. //加载数据
  169. webView.loadUrl(url);
  170. }
  171. });
  172. }
  173. //自定义PoiOverlay:
  174. classMyPoiOvrelyextendsPoiOverlay{
  175. publicMyPoiOvrely(BaiduMaparg0){
  176. super(arg0);
  177. //TODOAuto-generatedconstructorstub
  178. }
  179. //1需要点击事件:兴趣点的位置索引!
  180. @Override
  181. publicbooleanonPoiClick(intindex){
  182. //TODOAuto-generatedmethodstub
  183. //获取当前覆盖层的Poi结果对象PoiResult.
  184. PoiResultresult=getPoiResult();
  185. //在获取PoiResult中的List《poiInfo》集合数据!
  186. List<PoiInfo>lists=result.getAllPoi();
  187. //根据索引获取集合中的数据信息!兴趣点对象数据对象。
  188. finalPoiInfoinfo=lists.get(index);
  189. //弹出弹窗弹窗中内容:poiinfoname!
  190. baiduMap.setOnMarkerClickListener(newOnMarkerClickListener(){
  191. @Override
  192. publicbooleanonMarkerClick(Markermarker){
  193. //TODOAuto-generatedmethodstub
  194. //点击获取显示详细信息!
  195. getPoiInfo(info);
  196. returnfalse;
  197. }
  198. /**
  199. *点击获取显示详细信息!
  200. *@paraminfo
  201. *@parammarker
  202. */
  203. privatevoidgetPoiInfo(finalPoiInfoinfo){
  204. //设置弹窗(Viewarg0,LatLngarg1,intarg2)y偏移量,
  205. Buttonbtn=newButton(getApplicationContext());
  206. btn.setBackgroundColor(Color.GREEN);
  207. btn.setText(info.name);
  208. //btn变成View图片
  209. BitmapDescriptordescriptor=BitmapDescriptorFactory
  210. .fromView(btn);
  211. /**
  212. *弹窗的点击事件:
  213. *
  214. *bd-InfoWindow展示的bitmapposition-InfoWindow显示的地理位置
  215. *yOffset-InfoWindowY轴偏移量listener-InfoWindow点击监听者
  216. *
  217. **/
  218. InfoWindowinfoWindow=newInfoWindow(
  219. descriptor,
  220. info.location,
  221. -60,
  222. newOnInfoWindowClickListener(){
  223. publicvoidonInfoWindowClick(){
  224. //TODO当用户点击弹窗触发:
  225. //开启POI检索、开启路径规矩,跳转界面!
  226. //在弹窗监听器中二次检索兴趣点的详情!
  227. //开始搜索:
  228. poiSearch.searchPoiDetail(
  229. newPoiDetailSearchOption().poiUid(info.uid));
  230. //1隐藏弹窗!
  231. baiduMap.hideInfoWindow();
  232. }
  233. });
  234. //2showinfoWindow
  235. baiduMap.showInfoWindow(infoWindow);
  236. }
  237. });
  238. returnsuper.onPoiClick(index);
  239. }
  240. }
  241. @Override
  242. protectedvoidonResume(){
  243. //TODOAuto-generatedmethodstub
  244. super.onResume();
  245. mapView.onResume();
  246. }
  247. @Override
  248. protectedvoidonPause(){
  249. //TODOAuto-generatedmethodstub
  250. super.onPause();
  251. mapView.onPause();
  252. }
  253. @Override
  254. protectedvoidonDestroy(){
  255. //TODOAuto-generatedmethodstub
  256. super.onDestroy();
  257. mapView.onDestroy();
  258. }
  259. @Override
  260. publicbooleanonCreateOptionsMenu(Menumenu){
  261. //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
  262. getMenuInflater().inflate(R.menu.main,menu);
  263. returntrue;
  264. }
  265. }

更多相关文章

  1. Android 之 SQLite数据库的使用
  2. SQLite 数据库 WAL 工作模式原理简介
  3. android中的数据库操作(SQLite)
  4. Android菜鸟的成长笔记(11)——Android中的事件处理
  5. android 操作sqlite数据库
  6. Android事件处理
  7. Android之各种事件触发方案
  8. Android 利用TCP通信 实现环境数据显示及控制指令下发

随机推荐

  1. 关于使用框架操作Oracle数据库切换MySQL
  2. SQLServer 延迟事务持久性
  3. 修改sqlserver 2008 express为混合认证模
  4. linux ,cron定时任务 备份mysql数据库
  5. 动态执行sql问题
  6. SQL SERVER 日志已满的处理方法
  7. mysql 5.7 安装错误提示总结
  8. MySQL——问题:mysql(5.7版本)目录下没有d
  9. 命令提示符下怎样停止和启动 SQL Server
  10. SQL SERVER日志文件已满处理方法