百度检索定位
2016-09-25 19:57
162 查看
主界面========================================================
package com.bwie.test;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
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.CircleOptions;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.SearchResult;
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.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
public class MainActivity extends ActionBarActivity {
MapView mMapView = null;
private BaiduMap mBaiduMap;
private PoiSearch poiSearch;
private EditText city, keyword;
private PoiCitySearchOption poiCitySearchOption;
private OnGetPoiSearchResultListener poiListener;
LatLng center = new LatLng(40.049256, 116.306404);
int radius = 500;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
initView();
// 获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// 普通地图
// mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
// 卫星地图
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
// 创建POI检索实例
poiSearch = PoiSearch.newInstance();
// 创建POI检索监听者
poiListener = new OnGetPoiSearchResultListener() {
public void onGetPoiResult(PoiResult result) {
// 获取POI检索结果
if (result == null
|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
return;
}
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
mBaiduMap.clear();
// 创建PoiOverlay
PoiOverlay overlay = new PoiOverlay(mBaiduMap);
// 设置overlay可以处理标注点击事件
mBaiduMap.setOnMarkerClickListener(overlay);
// 设置PoiOverlay数据
overlay.setData(result);
// 添加PoiOverlay到地图中
overlay.addToMap();
overlay.zoomToSpan();
showNearbyArea(center, radius);
return;
}
}
public void onGetPoiDetailResult(PoiDetailResult result) {
// 获取Place详情页检索结果
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
};
}
/**
* 找到控件ID
*/
private void initView() {
city = (EditText) findViewById(R.id.city);
keyword = (EditText) findViewById(R.id.Keyword);
}
/**
* 搜索按钮监听
* @param view
*/
public void btn(View view) {
// 设置POI检索监听者
poiSearch.setOnGetPoiSearchResultListener(poiListener);
// 发起检索请求
poiSearch.searchInCity((new PoiCitySearchOption())
.city(city.getText().toString())
.keyword(keyword.getText().toString()).pageNum(10));
}
/**
* 在地图上绘制文字
* @param center
* @param radius
*/
public void showNearbyArea(LatLng center, int radius) {
// 定义文字所显示的坐标点
// 八维经纬度40.049256,116.306404
LatLng llText = new LatLng(40.049256, 116.306404);
// 构建文字Option对象,用于在地图上添加文字
OverlayOptions textOption = new TextOptions().bgColor(0xAAFFFF00)
.fontSize(24).fontColor(0xFFFF00FF).text("这是我们的母校")
.position(llText);
// 在地图上添加该文字对象并显示
mBaiduMap.addOverlay(textOption);
}
}
主界面布局========================================================
<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="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="填入城市"
/>
<EditText
android:id="@+id/Keyword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="输入关键字"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:onClick="btn"
/>
</LinearLayout>
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</LinearLayout>
帮助类OverlayManager==========================================================
public abstract class OverlayManager implements OnMarkerClickListener, OnPolylineClickListener {
BaiduMap mBaiduMap = null;
private List<OverlayOptions> mOverlayOptionList = null;
List<Overlay> mOverlayList = null;
/**
* 閫氳繃涓�涓狟aiduMap 瀵硅薄鏋勯��
*
* @param baiduMap
*/
public OverlayManager(BaiduMap baiduMap) {
mBaiduMap = baiduMap;
// mBaiduMap.setOnMarkerClickListener(this);
if (mOverlayOptionList == null) {
mOverlayOptionList = new ArrayList<OverlayOptions>();
}
if (mOverlayList == null) {
mOverlayList = new ArrayList<Overlay>();
}
}
/**
* 瑕嗗啓姝ゆ柟娉曡缃绠$悊鐨凮verlay鍒楄〃
*
* @return 绠$悊鐨凮verlay鍒楄〃
*/
public abstract List<OverlayOptions> getOverlayOptions();
/**
* 灏嗘墍鏈塐verlay 娣诲姞鍒板湴鍥句笂
*/
public final void addToMap() {
if (mBaiduMap == null) {
return;
}
removeFromMap();
List<OverlayOptions> overlayOptions = getOverlayOptions();
if (overlayOptions != null) {
mOverlayOptionList.addAll(getOverlayOptions());
}
for (OverlayOptions option : mOverlayOptionList) {
mOverlayList.add(mBaiduMap.addOverlay(option));
}
}
/**
* 灏嗘墍鏈塐verlay 浠� 鍦板浘涓婃秷闄�
*/
public final void removeFromMap() {
if (mBaiduMap == null) {
return;
}
for (Overlay marker : mOverlayList) {
marker.remove();
}
mOverlayOptionList.clear();
mOverlayList.clear();
}
/**
* 缂╂斁鍦板浘锛屼娇鎵�鏈塐verlay閮藉湪鍚堥�傜殑瑙嗛噹鍐�, 闇�鍦∣nMapLoadedCallback.onMapLoaded() 涔嬪悗璁剧疆,鍚﹀垯璁$畻鍦板浘绾у埆浼氶敊璇�
* <p>
* 娉細 璇ユ柟娉曞彧瀵筂arker绫诲瀷鐨刼verlay鏈夋晥
* </p>
*
*/
public void zoomToSpan() {
if (mBaiduMap == null) {
return;
}
if (mOverlayList.size() > 0) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Overlay overlay : mOverlayList) {
// polyline 涓殑鐐瑰彲鑳藉お澶氾紝鍙寜marker 缂╂斁
if (overlay instanceof Marker) {
builder.include(((Marker) overlay).getPosition());
}
}
mBaiduMap.setMapStatus(MapStatusUpdateFactory
.newLatLngBounds(builder.build()));
}
}
}
帮助类PoiOverlay==========================================================================
public class PoiOverlay extends OverlayManager {
private static final int MAX_POI_SIZE = 10;
private PoiResult mPoiResult = null;
/**
* 鏋勯�犲嚱鏁�
*
* @param baiduMap
* 璇� PoiOverlay 寮曠敤鐨� BaiduMap 瀵硅薄
*/
public PoiOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
/**
* 璁剧疆POI鏁版嵁
*
* @param poiResult
* 璁剧疆POI鏁版嵁
*/
public void setData(PoiResult poiResult) {
this.mPoiResult = poiResult;
}
@Override
public final List<OverlayOptions> getOverlayOptions() {
if (mPoiResult == null || mPoiResult.getAllPoi() == null) {
return null;
}
List<OverlayOptions> markerList = new ArrayList<OverlayOptions>();
int markerSize = 0;
for (int i = 0; i < mPoiResult.getAllPoi().size()
&& markerSize < MAX_POI_SIZE; i++) {
if (mPoiResult.getAllPoi().get(i).location == null) {
continue;
}
markerSize++;
Bundle bundle = new Bundle();
bundle.putInt("index", i);
markerList.add(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromAssetWithDpi("Icon_mark"
+ markerSize + ".png")).extraInfo(bundle)
.position(mPoiResult.getAllPoi().get(i).location));
}
return markerList;
}
/**
* 鑾峰彇璇� PoiOverlay 鐨� poi鏁版嵁
*
* @return
*/
public PoiResult getPoiResult() {
return mPoiResult;
}
/**
* 瑕嗗啓姝ゆ柟娉曚互鏀瑰彉榛樿鐐瑰嚮琛屼负
*
* @param i
* 琚偣鍑荤殑poi鍦�
* {@link com.baidu.mapapi.search.poi.PoiResult#getAllPoi()} 涓殑绱㈠紩
* @return
*/
public boolean onPoiClick(int i) {
// if (mPoiResult.getAllPoi() != null
// && mPoiResult.getAllPoi().get(i) != null) {
// Toast.makeText(BMapManager.getInstance().getContext(),
// mPoiResult.getAllPoi().get(i).name, Toast.LENGTH_LONG)
// .show();
// }
return false;
}
@Override
public final boolean onMarkerClick(Marker marker) {
if (!mOverlayList.contains(marker)) {
return false;
}
if (marker.getExtraInfo() != null) {
return onPoiClick(marker.getExtraInfo().getInt("index"));
}
return false;
}
@Override
public boolean onPolylineClick(Polyline polyline) {
// TODO Auto-generated method stub
return false;
}
}
配置资源==================================================================================
<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" />
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="QRUnj5gO8dzwo4CexLs2TLHeKtM3c7rP" />
//记得导入所需jar包。
package com.bwie.test;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
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.CircleOptions;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.SearchResult;
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.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
public class MainActivity extends ActionBarActivity {
MapView mMapView = null;
private BaiduMap mBaiduMap;
private PoiSearch poiSearch;
private EditText city, keyword;
private PoiCitySearchOption poiCitySearchOption;
private OnGetPoiSearchResultListener poiListener;
LatLng center = new LatLng(40.049256, 116.306404);
int radius = 500;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
initView();
// 获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// 普通地图
// mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
// 卫星地图
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
// 创建POI检索实例
poiSearch = PoiSearch.newInstance();
// 创建POI检索监听者
poiListener = new OnGetPoiSearchResultListener() {
public void onGetPoiResult(PoiResult result) {
// 获取POI检索结果
if (result == null
|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
return;
}
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
mBaiduMap.clear();
// 创建PoiOverlay
PoiOverlay overlay = new PoiOverlay(mBaiduMap);
// 设置overlay可以处理标注点击事件
mBaiduMap.setOnMarkerClickListener(overlay);
// 设置PoiOverlay数据
overlay.setData(result);
// 添加PoiOverlay到地图中
overlay.addToMap();
overlay.zoomToSpan();
showNearbyArea(center, radius);
return;
}
}
public void onGetPoiDetailResult(PoiDetailResult result) {
// 获取Place详情页检索结果
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
};
}
/**
* 找到控件ID
*/
private void initView() {
city = (EditText) findViewById(R.id.city);
keyword = (EditText) findViewById(R.id.Keyword);
}
/**
* 搜索按钮监听
* @param view
*/
public void btn(View view) {
// 设置POI检索监听者
poiSearch.setOnGetPoiSearchResultListener(poiListener);
// 发起检索请求
poiSearch.searchInCity((new PoiCitySearchOption())
.city(city.getText().toString())
.keyword(keyword.getText().toString()).pageNum(10));
}
/**
* 在地图上绘制文字
* @param center
* @param radius
*/
public void showNearbyArea(LatLng center, int radius) {
// 定义文字所显示的坐标点
// 八维经纬度40.049256,116.306404
LatLng llText = new LatLng(40.049256, 116.306404);
// 构建文字Option对象,用于在地图上添加文字
OverlayOptions textOption = new TextOptions().bgColor(0xAAFFFF00)
.fontSize(24).fontColor(0xFFFF00FF).text("这是我们的母校")
.position(llText);
// 在地图上添加该文字对象并显示
mBaiduMap.addOverlay(textOption);
}
}
主界面布局========================================================
<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="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="填入城市"
/>
<EditText
android:id="@+id/Keyword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="输入关键字"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:onClick="btn"
/>
</LinearLayout>
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</LinearLayout>
帮助类OverlayManager==========================================================
public abstract class OverlayManager implements OnMarkerClickListener, OnPolylineClickListener {
BaiduMap mBaiduMap = null;
private List<OverlayOptions> mOverlayOptionList = null;
List<Overlay> mOverlayList = null;
/**
* 閫氳繃涓�涓狟aiduMap 瀵硅薄鏋勯��
*
* @param baiduMap
*/
public OverlayManager(BaiduMap baiduMap) {
mBaiduMap = baiduMap;
// mBaiduMap.setOnMarkerClickListener(this);
if (mOverlayOptionList == null) {
mOverlayOptionList = new ArrayList<OverlayOptions>();
}
if (mOverlayList == null) {
mOverlayList = new ArrayList<Overlay>();
}
}
/**
* 瑕嗗啓姝ゆ柟娉曡缃绠$悊鐨凮verlay鍒楄〃
*
* @return 绠$悊鐨凮verlay鍒楄〃
*/
public abstract List<OverlayOptions> getOverlayOptions();
/**
* 灏嗘墍鏈塐verlay 娣诲姞鍒板湴鍥句笂
*/
public final void addToMap() {
if (mBaiduMap == null) {
return;
}
removeFromMap();
List<OverlayOptions> overlayOptions = getOverlayOptions();
if (overlayOptions != null) {
mOverlayOptionList.addAll(getOverlayOptions());
}
for (OverlayOptions option : mOverlayOptionList) {
mOverlayList.add(mBaiduMap.addOverlay(option));
}
}
/**
* 灏嗘墍鏈塐verlay 浠� 鍦板浘涓婃秷闄�
*/
public final void removeFromMap() {
if (mBaiduMap == null) {
return;
}
for (Overlay marker : mOverlayList) {
marker.remove();
}
mOverlayOptionList.clear();
mOverlayList.clear();
}
/**
* 缂╂斁鍦板浘锛屼娇鎵�鏈塐verlay閮藉湪鍚堥�傜殑瑙嗛噹鍐�, 闇�鍦∣nMapLoadedCallback.onMapLoaded() 涔嬪悗璁剧疆,鍚﹀垯璁$畻鍦板浘绾у埆浼氶敊璇�
* <p>
* 娉細 璇ユ柟娉曞彧瀵筂arker绫诲瀷鐨刼verlay鏈夋晥
* </p>
*
*/
public void zoomToSpan() {
if (mBaiduMap == null) {
return;
}
if (mOverlayList.size() > 0) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Overlay overlay : mOverlayList) {
// polyline 涓殑鐐瑰彲鑳藉お澶氾紝鍙寜marker 缂╂斁
if (overlay instanceof Marker) {
builder.include(((Marker) overlay).getPosition());
}
}
mBaiduMap.setMapStatus(MapStatusUpdateFactory
.newLatLngBounds(builder.build()));
}
}
}
帮助类PoiOverlay==========================================================================
public class PoiOverlay extends OverlayManager {
private static final int MAX_POI_SIZE = 10;
private PoiResult mPoiResult = null;
/**
* 鏋勯�犲嚱鏁�
*
* @param baiduMap
* 璇� PoiOverlay 寮曠敤鐨� BaiduMap 瀵硅薄
*/
public PoiOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
/**
* 璁剧疆POI鏁版嵁
*
* @param poiResult
* 璁剧疆POI鏁版嵁
*/
public void setData(PoiResult poiResult) {
this.mPoiResult = poiResult;
}
@Override
public final List<OverlayOptions> getOverlayOptions() {
if (mPoiResult == null || mPoiResult.getAllPoi() == null) {
return null;
}
List<OverlayOptions> markerList = new ArrayList<OverlayOptions>();
int markerSize = 0;
for (int i = 0; i < mPoiResult.getAllPoi().size()
&& markerSize < MAX_POI_SIZE; i++) {
if (mPoiResult.getAllPoi().get(i).location == null) {
continue;
}
markerSize++;
Bundle bundle = new Bundle();
bundle.putInt("index", i);
markerList.add(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromAssetWithDpi("Icon_mark"
+ markerSize + ".png")).extraInfo(bundle)
.position(mPoiResult.getAllPoi().get(i).location));
}
return markerList;
}
/**
* 鑾峰彇璇� PoiOverlay 鐨� poi鏁版嵁
*
* @return
*/
public PoiResult getPoiResult() {
return mPoiResult;
}
/**
* 瑕嗗啓姝ゆ柟娉曚互鏀瑰彉榛樿鐐瑰嚮琛屼负
*
* @param i
* 琚偣鍑荤殑poi鍦�
* {@link com.baidu.mapapi.search.poi.PoiResult#getAllPoi()} 涓殑绱㈠紩
* @return
*/
public boolean onPoiClick(int i) {
// if (mPoiResult.getAllPoi() != null
// && mPoiResult.getAllPoi().get(i) != null) {
// Toast.makeText(BMapManager.getInstance().getContext(),
// mPoiResult.getAllPoi().get(i).name, Toast.LENGTH_LONG)
// .show();
// }
return false;
}
@Override
public final boolean onMarkerClick(Marker marker) {
if (!mOverlayList.contains(marker)) {
return false;
}
if (marker.getExtraInfo() != null) {
return onPoiClick(marker.getExtraInfo().getInt("index"));
}
return false;
}
@Override
public boolean onPolylineClick(Polyline polyline) {
// TODO Auto-generated method stub
return false;
}
}
配置资源==================================================================================
<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" />
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="QRUnj5gO8dzwo4CexLs2TLHeKtM3c7rP" />
//记得导入所需jar包。
相关文章推荐
- Android使用GSP和百度SDK定位
- Android调用百度地图Web端接口,实现百度定位、导航
- 百度Android定位SDK4.2
- 百度定位SDK错误,或者ZXing错误:Couldn't load locSDK3: findLibrary returned null
- 百度定位SDK使用V4.0
- 百度站内检索工具Custom Search抢先体验
- 百度定位API报错:leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0
- 实现android基于百度的定位
- 使用百度定位SDK出现4.9E-324
- android集成百度地图定位、poi检索、marker标记功能,以及marker点击事件
- 简易百度定位
- 百度地图-解决新版百度定位失败问题
- Xamarin Android 集成百度定位SDK
- android 如何调用百度定位api接口
- 百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能
- 使用百度sdk定位相关参数设定
- 如何利用百度地区定位到城市名
- 百度地图工具类封装(包括定位,附近、城市、范围poi检索,反地理编码)
- Android:百度定位异常Couldn't load locSDK4d from loader dalvik.system.PathClassLoader
- Android studio中集成百度地图+百度定位+导航SDK冲突导致部分手机出现“百度导航引擎初始化失败”解决方案