百度地图实现普通地图、定位、周边搜索功能
//--------------一下是普通地圖的實現-----------------------------------
1:打開百度地圖APi進去,如果沒有注冊過的需要注冊,注冊過的登錄進入
2:點擊開發——Android地圖SDk——點擊獲取密鑰——點擊創建應用——然后你就創建一個新的項目
3:打開你項目下的res——values——string.xml把項目名:比如BaiDuMap復制到應用名稱中去
4:應用類型選擇:Android SDK
5:發布版SHA1 的獲取:打開你電腦的c盤——用戶——你的用戶名——.android 下面有一個debug.keystore ?
?? 點擊鍵盤Windows+R 進入黑窗口 輸入? keytool -list -v -keystore 把keytool -list -v -keystore拖進去(注意:-keystore后面要有一個空格)點擊鍵盤的回車鍵(如果你是輸入進去,黑窗口報錯keytool如下)
這樣的話你需要把環境變量設置一下
不要按照網上那些帖子配置需要這樣全部設置到path里面
6:輸入密鑰庫口令:android (注意都是英文小寫)回車鍵
7:把下面顯示的證書指紋中的:SHA1復制到 發布版SHA1
8:打開你項目的清單文件 把包名復制到 包名?
9:點擊下面的提交
10:就生成了一個Key
11:點擊開發指南下的相關下載,下載相關的demo
12:把demo中libs下的除了android-support-v4? 全部復制到你的工程的libs下
?點擊Android Studio工具欄中的有多個小方塊的那個圖標
?點擊APP再點擊Dependencies ——點擊加號 ——選擇File dependency
把libs下的jar包都添加進去
13:進入百度地圖Api的Android定位Sdk 中開發指南中的配置環境 找到
sourceSets {
??????? main {
?? ??? ??? ?jniLibs.srcDirs = ['libs']
??????? }
}
復制到 工程下的build.gradle中
如:buildTypes {
??????? release {
??????????? minifyEnabled false
??????????? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
??????? }
??? }
??? sourceSets {
??????? main {
??????????? jniLibs.srcDirs = ['libs']
??????? }
??? }
}
dependencies {
??? compile fileTree(dir: 'libs', include: ['*.jar'])
??? testCompile 'junit:junit:4.12'
??? compile 'com.android.support:appcompat-v7:23.4.0'
}
點擊右上角的Sync Now 同步一下
14:進入開發指南中的 Hello BaiduMap中 (注意:key值就是剛才我們申請的那個)
?(1)在application中添加開發密鑰
<application> ?
??? <meta-data ?
??????? android:name="com.baidu.lbsapi.API_KEY" ?
??????? android:value="開發者 key" /> ?
</application>
2)添加所需權限
<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" />
第三步,在布局xml文件中添加地圖控件;
<com.baidu.mapapi.map.MapView ?
??? android:id="@+id/bmapView" ?
??? android:layout_width="fill_parent" ?
??? android:layout_height="fill_parent" ?
??? android:clickable="true" />
第四步,在應用程序創建時初始化 SDK引用的Context 全局變量:
public class MainActivity extends Activity { ?
??? @Override ?
??? protected void onCreate(Bundle savedInstanceState) { ?
??????? super.onCreate(savedInstanceState);? ?
??????? //在使用SDK各組件之前初始化context信息,傳入ApplicationContext ?
??????? //注意該方法要再setContentView方法之前實現 ?
??????? SDKInitializer.initialize(getApplicationContext()); ?
??????? setContentView(R.layout.activity_main); ?
??? } ?
}
注意:在SDK各功能組件使用之前都需要調用
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中
第四步我是這么做的:新建一個application包,在這個包下新創建一個BaseApplication類并繼承Application,實現onCreate的方法
在onCreate中復制 SDKInitializer.initialize(getApplicationContext());進去
如下:
public class BaseApplication extends Application{
??? @Override
??? public void onCreate() {
??????? super.onCreate();
??????? SDKInitializer.initialize(getApplicationContext());
??? }
}
然后在清單文件中配置:<application下:
<application
??????? android:name=".application.BaseApplication"//包名
第五步,創建地圖Activity,管理地圖生命周期;
public class MainActivity extends Activity { ?
??? MapView mMapView = null; ?
??? @Override ?
??? protected 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); ?
??? } ?
??? @Override ?
??? protected void onDestroy() { ?
??????? super.onDestroy(); ?
??????? //在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命周期管理 ?
??????? mMapView.onDestroy(); ?
??? } ?
??? @Override ?
??? protected void onResume() { ?
??????? super.onResume(); ?
??????? //在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 ?
??????? mMapView.onResume(); ?
??????? } ?
??? @Override ?
??? protected void onPause() { ?
??????? super.onPause(); ?
??????? //在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 ?
??????? mMapView.onPause(); ?
??????? } ?
??? }
完成以上步驟后,運行程序,即可在您的應用中顯示
?
//-------------------以上是普通地圖的實現---------------------------------------------------------
?
?
//===============以下是定位功能的實現==========================
一:
1:配置環境 進入Android定位SDK的開發指南中點擊配置環境
?
使用AndroidStutio的開發者除了上述操作外,還需要在build.gradle中配置SO文件的使用,如下所示:
sourceSets {
??????? main {
?? ??? ??? ?jniLibs.srcDirs = ['libs']
??????? }
}
2:
設置AndroidManifest.xml
在Application標簽中聲明SERVICE組件,每個APP擁有自己單獨的定位SERVICE
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
? 3:聲明使用權限
<!-- 這個權限用于進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個權限用于訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于訪問wifi網絡信息,wifi信息會用于進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商信息,用于支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個權限用于獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 寫入擴展存儲,向擴展卡寫入數據,用于寫入離線定位數據-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網絡,網絡定位需要上網-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權限,用戶寫入離線定位數據-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
4:
設置AcessKey
Android定位SDK4.2及之后版本需要在Mainfest.xml正確設置Accesskey(AK),如果設置錯誤將會導致定位和地理圍欄服務無法正常使用。
設置AK,在Application標簽中加入
<meta-data
??????????? android:name="com.baidu.lbsapi.API_KEY"
??????????? android:value="AK" />?????? //key:開發者申請的Key
?
//-------------------Activity2-------------------復制一下代碼即可-------------代碼來源下載的Demo中src下的baidumapsdk下的demo下的map下的LocationDemo------------------------
package com.example.baidumap.activity;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.example.baidumap.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class Activity2 extends Activity{
?? ?MapView mMapView = null; ?
?? ?// 定位相關
??? LocationClient mLocClient;
??? public MyLocationListenner myListener = new MyLocationListenner();
??? BaiduMap mBaiduMap;
??? boolean isFirstLoc = true; // 是否首次定位
?? ?
?? ?@Override
?? ?protected void onCreate(Bundle savedInstanceState) {
?? ??? ?super.onCreate(savedInstanceState);
?? ??? ?requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄?
?? ??? ?setContentView(R.layout.activity_main);
?? ??? ?//獲取地圖控件引用 ?
??????? mMapView = (MapView) findViewById(R.id.bmapView); ?
?????? ?
?????? ?
??????? mBaiduMap = mMapView.getMap();
??????? // 開啟定位圖層
??????? mBaiduMap.setMyLocationEnabled(true);
??????? // 定位初始化
??????? mLocClient = new LocationClient(this);
??????? mLocClient.registerLocationListener(myListener);
??????? LocationClientOption option = new LocationClientOption();
??????? option.setOpenGps(true); // 打開gps
??????? option.setCoorType("bd09ll"); // 設置坐標類型
??????? option.setScanSpan(1000);
??????? mLocClient.setLocOption(option);
??????? mLocClient.start();
?????? ?
?? ?}
?? ?? /**
???? * 定位SDK監聽函數
???? */
??? public class MyLocationListenner implements 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 (isFirstLoc) {
??????????????? isFirstLoc = false;
??????????????? LatLng ll = new LatLng(location.getLatitude(),
??????????????????????? location.getLongitude());
??????????????? MapStatus.Builder builder = new MapStatus.Builder();
??????????????? builder.target(ll).zoom(18.0f);
??????????????? mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
??????????? }
??????? }
??????? public void onReceivePoi(BDLocation poiLocation) {
??????? }
??? }
?? ?
?? ?
?? ?? @Override ?
?? ???? protected void onDestroy() { ?
?? ???????? super.onDestroy(); ?
?? ???????? // 退出時銷毀定位
?? ???????? mLocClient.stop();
?? ???????? // 關閉定位圖層
?? ???????? mBaiduMap.setMyLocationEnabled(false);
?? ???????? mMapView.onDestroy();
?? ???????? mMapView = null;
?? ???? } ?
?? ???? @Override ?
?? ???? protected void onResume() { ?
?? ???????? super.onResume(); ?
?? ???????? //在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 ?
?? ???????? mMapView.onResume(); ?
?? ???????? } ?
?? ???? @Override ?
?? ???? protected void onPause() { ?
?? ???????? super.onPause(); ?
?? ???????? //在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 ?
?? ???????? mMapView.onPause(); ?
?? ???????? } ?
}
?//--------------以上是定位--------------------------------
//================以下是周邊搜索功能===========================
注意:實現此功能時,導入了兩個類文件,分別是src下的com下的baidu下的mapapi下的overlayutil下的?OverlayManager?和?PoiOverlay
?
//---------------------Activity3中?????????? 完成以下就可做一個簡單的周邊搜索了--------------------------------------------------
package com.example.baidumap.activity;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.CircleOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiBoundSearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
import com.baidu.mapapi.search.poi.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import com.baidu.mapapi.search.poi.PoiSortType;
import com.example.baidumap.R;
import com.example.baidumap.activity.Activity2.MyLocationListenner;
import com.example.baidumap.utils.PoiOverlay;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Activity3 extends Activity implements OnGetPoiSearchResultListener{
?? ?MapView mMapView = null; ?
?? ?// 定位相關
??? LocationClient mLocClient;
??? public MyLocationListenner myListener = new MyLocationListenner();
??? BaiduMap mBaiduMap;
??? boolean isFirstLoc = true; // 是否首次定位
?? ?private EditText et_text;
?? ?private Button bt_button;
?? ?
?? ? private PoiSearch mPoiSearch = null;
?? ? LatLng center = null;
?? ? int radius = 50000;
?? ??
?? ??
//-----------------onCreate-------------------------
?? ??
?? ?@Override
?? ?protected void onCreate(Bundle savedInstanceState) {
?? ??? ?super.onCreate(savedInstanceState);
?? ??? ?requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄?
?? ??? ?setContentView(R.layout.activity_main);
?? ??? ?//找到控件
?? ??? ?et_text = (EditText) findViewById(R.id.et_text);
?? ??? ?bt_button = (Button) findViewById(R.id.bt_nutton);
?? ??? ?//獲取地圖控件引用 ?
??????? mMapView = (MapView) findViewById(R.id.bmapView); ?
?????? ?
?????? ?
??????? mBaiduMap = mMapView.getMap();
??????? // 開啟定位圖層
??????? mBaiduMap.setMyLocationEnabled(true);
??????? // 定位初始化
??????? mLocClient = new LocationClient(this);
??????? mLocClient.registerLocationListener(myListener);
??????? LocationClientOption option = new LocationClientOption();
??????? option.setOpenGps(true); // 打開gps
??????? option.setCoorType("bd09ll"); // 設置坐標類型
??????? option.setScanSpan(1000);
??????? mLocClient.setLocOption(option);
??????? mLocClient.start();
????? ?
?????? ?
??????? // 初始化搜索模塊,注冊搜索事件監聽
??????? mPoiSearch = PoiSearch.newInstance();
??????? mPoiSearch.setOnGetPoiSearchResultListener(this);
?????? ?
??????? //點擊搜索
??????? bt_button.setOnClickListener(new OnClickListener() {
?? ??? ??? ?
?? ??? ??? ?@Override
?? ??? ??? ?public void onClick(View v) {
?? ??? ??? ??? ?//關閉輸入框
?? ??? ??? ??? ?InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
?? ??? ???????? imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
?? ??? ??? ??? ? PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption().keyword(et_text.getText()
?? ??? ??? ???????????????? .toString()).sortType(PoiSortType.distance_from_near_to_far).location(center)
?? ??? ??? ???????????????? .radius(radius).pageNum(10);//顯示數據個數
?? ??? ??? ???????? mPoiSearch.searchNearby(nearbySearchOption);
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?});
?????? ?
?? ?}
?? ?? /**
???? * 定位SDK監聽函數
???? */
??? public class MyLocationListenner implements BDLocationListener {
??????? @Override
??????? public void onReceiveLocation(BDLocation location) {
??????????? // map view 銷毀后不在處理新接收的位置
??????????? if (location == null || mMapView == null) {
??????????????? return;
??????????? }
?????????? ?
??????????? center=new LatLng(location.getLatitude(), location.getLongitude());
?????????? ?
??????????? MyLocationData locData = new MyLocationData.Builder()
??????????????????? .accuracy(location.getRadius())
??????????????????????????? // 此處設置開發者獲取到的方向信息,順時針0-360
??????????????????? .direction(100).latitude(location.getLatitude())
??????????????????? .longitude(location.getLongitude()).build();
??????????? mBaiduMap.setMyLocationData(locData);
??????????? if (isFirstLoc) {
??????????????? isFirstLoc = false;
??????????????? LatLng ll = new LatLng(location.getLatitude(),
??????????????????????? location.getLongitude());
??????????????? MapStatus.Builder builder = new MapStatus.Builder();
??????????????? builder.target(ll).zoom(18.0f);
??????????????? mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
??????????? }
??????? }
??????? public void onReceivePoi(BDLocation poiLocation) {
??????? }
??? }
?? ?
?? ?
?? ?? @Override ?
?? ???? protected void onDestroy() { ?
?? ???????? super.onDestroy(); ?
?? ???????? // 退出時銷毀定位
?? ???????? mLocClient.stop();
?? ???????? // 關閉定位圖層
?? ???????? mBaiduMap.setMyLocationEnabled(false);
?? ???????? mMapView.onDestroy();
?? ???????? mMapView = null;
?? ???? } ?
?? ???? @Override ?
?? ???? protected void onResume() { ?
?? ???????? super.onResume(); ?
?? ???????? //在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 ?
?? ???????? mMapView.onResume(); ?
?? ????? } ?
?? ??? ?
?? ???? @Override ?
?? ???? protected void onPause() { ?
?? ???????? super.onPause(); ?
?? ???????? //在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 ?
?? ???????? mMapView.onPause(); ?
?? ??????? ?
?? ????? }
?? ??? ?
?? ??? ?
?? ??? ?
?? ???? /**
?? ????? * 獲取POI詳情搜索結果,得到searchPoiDetail返回的搜索結果
?? ????? * @param result
?? ????? */
?? ??? ?@Override
?? ??? ?public void onGetPoiDetailResult(PoiDetailResult arg0) {
?? ??? ??? ? if (arg0.error != SearchResult.ERRORNO.NO_ERROR) {
?? ??? ???????????? Toast.makeText(Activity3.this, "抱歉,未找到結果", Toast.LENGTH_SHORT).show();
?? ??? ???????? } else {
?? ??? ???????????? Toast.makeText(Activity3.this, arg0.getName() + ": " + arg0.getAddress(), Toast.LENGTH_SHORT).show();
?? ??? ??????????????????? ?
?? ??? ???????? }?? ??? ??? ?
?? ??? ?}
?? ??? ?
?? ??? ?@Override
?? ??? ?public void onGetPoiIndoorResult(PoiIndoorResult arg0) {
?? ??? ??? ?
?? ??? ??? ?
?? ??? ?}
?? ??? ?
?? ??? ?/**
?? ????? * 獲取POI搜索結果,包括searchInCity,searchNearby,searchInBound返回的搜索結果
?? ????? * @param result
?? ????? */
?? ??? ?@Override
?? ??? ?public void onGetPoiResult(PoiResult arg0) {
?? ??? ??? ? if (arg0 == null || arg0.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
?? ??? ???????????? Toast.makeText(Activity3.this, "未找到結果", Toast.LENGTH_LONG)
?? ??? ???????????????????? .show();
?? ??? ???????????? return;
?? ??? ???????? }
?? ??? ???????? if (arg0.error == SearchResult.ERRORNO.NO_ERROR) {
?? ??? ???????????? mBaiduMap.clear();
?? ??? ???????????? PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);
?? ??? ???????????? mBaiduMap.setOnMarkerClickListener(overlay);
?? ??? ???????????? overlay.setData(arg0);
?? ??? ???????????? overlay.addToMap();
?? ??? ???????????? overlay.zoomToSpan();
?? ??? ??????????? ?
??????????????????? showNearbyArea(center, radius);
?? ??? ??????????????? ?
?? ??? ????????? ?
?? ??? ???????????? return;
?? ??? ???????? }
?? ??? ??? ?
?? ??? ?}?
?? ??? ?
?? ??? ?
?? ??? ? private class MyPoiOverlay extends PoiOverlay {
?? ??? ???????? public MyPoiOverlay(BaiduMap baiduMap) {
?? ??? ???????????? super(baiduMap);
?? ??? ???????? }
?? ??? ???????? @Override
?? ??? ???????? public boolean onPoiClick(int index) {
?? ??? ???????????? super.onPoiClick(index);
?? ??? ???????????? PoiInfo poi = getPoiResult().getAllPoi().get(index);
?? ??? ???????????? // if (poi.hasCaterDetails) {
?? ??? ???????????? mPoiSearch.searchPoiDetail((new PoiDetailSearchOption())
?? ??? ???????????????????? .poiUid(poi.uid));
?? ??? ???????????? // }
?? ??? ???????????? return true;
?? ??? ???????? }
?? ??? ???? }
?? ??? ??
?? ??? ? /**
?? ??? ????? * 對周邊檢索的范圍進行繪制
?? ??? ????? * @param center
?? ??? ????? * @param radius
?? ??? ????? */
?? ??? ???? public void showNearbyArea( LatLng center, int radius) {
?? ??? ??? ??? ?//設置中心點
?? ??? ??????? /* BitmapDescriptor centerBitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);
?? ??? ???????? MarkerOptions ooMarker = new MarkerOptions().position(center).icon(centerBitmap);
?? ??? ???????? mBaiduMap.addOverlay(ooMarker);*/
?? ??? ???????? //顯示圖層
?? ??? ??????? /* OverlayOptions ooCircle = new CircleOptions().fillColor( 0xCCCCCC00 ).center(center).stroke(new Stroke(5, 0xFFFF00FF )).radius(radius);
?? ??? ???????? mBaiduMap.addOverlay(ooCircle);*/
?? ??? ???? }
}
//===========以上是周邊搜索功能==================
//----------------以下是周邊搜索的布局文件--------------------------
<LinearLayout 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:orientation="vertical">
??? <LinearLayout android:layout_width="fill_parent"?????? ?
??????? android:layout_height="wrap_content"
??????? android:orientation="horizontal">
??????? <EditText android:layout_width="0dp"
??????????? android:layout_height="wrap_content"
??????????? android:layout_weight="1"
??????????? android:id="@+id/et_text"
??????????? android:hint="請輸入搜索內容"/>
??????? <Button android:layout_width="wrap_content"?
??????????? android:layout_height="wrap_content"
??????????? android:text="周邊搜索"
??????????? android:id="@+id/bt_nutton"/>
?????? ?
??? </LinearLayout>
??? <com.baidu.mapapi.map.MapView ?
??? android:id="@+id/bmapView" ?
??? android:layout_width="fill_parent" ?
??? android:layout_height="fill_parent" ?
??? android:clickable="true" />
</LinearLayout>
****************注意Android6.0以增加了權限有些權限需要添加一下代碼進行添加權限**********************/
/*不添加權限會導致定位不準確*/
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED|| ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {//申請WRITE_EXTERNAL_STORAGE權限ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, ACCESS_COARSE_LOCATION_REQUEST_CODE); }else {initMap(sss); sss是集成百度地圖放到了initMap();方法里面了,上邊有具體的方法!@ }
總結
以上是生活随笔為你收集整理的百度地图实现普通地图、定位、周边搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度webupload的使用
- 下一篇: 2020年十大IT技术工种,总有一个适合