依赖包:
添加 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图形系统的分析与移植--一、Android(安卓)GUI系统简介
  2. Android图形系统的分析与移植--一、Android(安卓)GUI系统简介
  3. Android软键盘回车键修改为搜索按键
  4. 当GridView中的一项被点中的时候显示的背景图片:android:listSele
  5. 周记:Class4
  6. android - TextView单行显示...或者文字左右滚动(走马灯效果)
  7. ListView透明背景点击设置
  8. android 的View Tree和 DecorView(Android(安卓)ViewTree and Dec
  9. ImageView的属性android:scaleType

随机推荐

  1. Source not found-Android 使用隐藏API(2)
  2. How to decompile Google Android .apk f
  3. Android遍历文件Listfile返回值为null问
  4. 编译jar包
  5. Does Android(安卓)2.2 support contentE
  6. 关于Android LOG系统
  7. [Android]在Manifest中注册广播监听器
  8. Android(安卓)添加程序到桌面favorites列
  9. 29.Android 传感器
  10. android线程间通信和主线程更新ui