扣丁学堂笔记第25天百度地图

来源:互联网 发布:sql与mysql 编辑:程序博客网 时间:2024/04/27 15:50

1.密钥申请与环境配置

申请密钥与环境配置详见官网

2.Hello Baidu Map!

详见官网

3.基础地图

4.检索功能

MainActivity

package com.example.baidumaptest;import java.util.List;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.MapView;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.search.core.PoiInfo;import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;import com.baidu.mapapi.search.poi.PoiCitySearchOption;import com.baidu.mapapi.search.poi.PoiDetailResult;import com.baidu.mapapi.search.poi.PoiResult;import com.baidu.mapapi.search.poi.PoiSearch;import android.app.Activity;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {private MapView mMapView;private BaiduMap baiduMap;private PoiSearch poiSearch;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.bmapView);baiduMap = mMapView.getMap();// baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//卫星图// 定义Maker坐标点LatLng point = new LatLng(39.963175, 116.400244);// 构建Marker图标BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);// 构建MarkerOption,用于在地图上添加MarkerOverlayOptions option = new MarkerOptions().position(point).icon(bitmap);// 在地图上添加Marker,并显示baiduMap.addOverlay(option);//1.实例化POI检索poiSearch = PoiSearch.newInstance();//2.创建POI检索监听者; OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){      public void onGetPoiResult(PoiResult result){      //获取POI检索结果      List<PoiInfo> poiInfos = result.getAllPoi();    for (PoiInfo poiInfo : poiInfos) {System.out.println(poiInfo.address+"---"+poiInfo.city+"---"+poiInfo.phoneNum);}    }      public void onGetPoiDetailResult(PoiDetailResult result){      //获取Place详情页检索结果      }  };//3.设置POI检索监听者poiSearch.setOnGetPoiSearchResultListener(poiListener);}public void poiClick(View view){//4.发起检索请求,异步过程poiSearch.searchInCity((new PoiCitySearchOption())  .city("北京")      .keyword("美食")      .pageNum(10));}@Overrideprotected void onDestroy() {super.onDestroy();// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();//5.释放POI检索请求poiSearch.destroy();}@Overrideprotected void onResume() {super.onResume();// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}}

activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.baidumaptest.MainActivity" >    <Button android:id="@+id/btn_poi"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="POI检索"        android:onClick="poiClick"/>    <com.baidu.mapapi.map.MapView        android:id="@+id/bmapView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:clickable="true"         android:layout_below="@+id/btn_poi"/>    </RelativeLayout>

AndroidManifest

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />    <uses-permission android:name="android.permission.WAKE_LOCK" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.GET_TASKS" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
在<application></application>中添加如下标签
<meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="**************************" />


5.显示检索结果与定位

在foreach循环中添加三行代码即可显示检索结果

BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);// 构建MarkerOption,用于在地图上添加MarkerOverlayOptions option = new MarkerOptions().position(poiInfo.location).icon(bd);// 在地图上添加Marker,并显示baiduMap.addOverlay(option);

6.定位显示我的位置

定位部分详见:http://blog.csdn.net/dt235201314/article/details/50680219

7.实时跟踪导航案例

0 0
原创粉丝点击