一、基本概念:

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、義烏ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的義烏網(wǎng)站制作公司
(一)、百度地圖:
百度地圖 Android SDK是一套基于Android 2.1及以上版本設(shè)備的應(yīng)用程序接口。 您可以使用該套 SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,您可以輕松訪問百度地圖服務(wù)和數(shù)據(jù), 構(gòu)建功能豐富、交互性強(qiáng)的地圖類應(yīng)用程序。
百度地圖Android SDK提供的所有服務(wù)是免費(fèi)的,接口使用無(wú)次數(shù)限制。您需申請(qǐng)密鑰(key)后, 才可使用百度地圖Android SDK。
(二)、LBS:(Location based Service)基于位置的服務(wù)
基于位置的服務(wù),它是通過電信移動(dòng)運(yùn)營(yíng)商的無(wú)線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo)),在地理信息系統(tǒng)(外語(yǔ)縮寫:GIS、外語(yǔ)全稱:Geographic Information System)平臺(tái)的支持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。
二、百度地圖使用步驟:【參照()】
(一)、HelloBaiduMap:
1、第一步:申請(qǐng)百度地圖密鑰(API_KEY):
2、第二步:在工程里新建libs文件夾,將開發(fā)包里的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網(wǎng)demo里已有這兩個(gè)文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成后的工程目錄如下圖所示;
注:liblocSDK3.so和locSDK_3.1.jar為百度定位SDK所使用資源,開發(fā)者可根據(jù)實(shí)際需求自行添加。
3、第三步:在AndroidManifest中添加開發(fā)密鑰、所需權(quán)限等信息;
application
meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="P3G69b5s87YG5M31f8A7oyLW"/
/application
uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/
uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/
uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permissionandroid:name="android.permission.INTERNET"/
uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/
uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/
uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/
uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/
uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
4、第四步:在布局文件中添加地圖控件:
com.baidu.mapapi.map.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/
5、第五步:在應(yīng)用程序創(chuàng)建時(shí)初始化 SDK引用的Context 全局變量:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實(shí)現(xiàn)
SDKInitializer.initialize(getApplicationContext());
// 裝載布局文件
setContentView(R.layout.activity_main);
}
6、第六步:創(chuàng)建地圖Activity,管理地圖生命周期:
publicclass MainActivity extends Activity {
private MapView mapView;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實(shí)現(xiàn)
SDKInitializer.initialize(getApplicationContext());
// 裝載布局文件
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
}
@Override
protectedvoid onResume() {
super.onResume();
mapView.onResume();
}
@Override
protectedvoid onPause() {
super.onPause();
mapView.onPause();
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
(二)、基礎(chǔ)地圖:
1、實(shí)現(xiàn)基礎(chǔ)地圖的操作步驟:
布局文件中使用MapView;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化BaiduMap對(duì)象;
對(duì)MapView進(jìn)行findViewById();
MapView對(duì)象調(diào)用getMap(),返回BaiduMap;
設(shè)置BaiduMap;
setMapType();
setTrafficEnabled();
(三)、POI搜索:
1、實(shí)現(xiàn)POI搜索的操作步驟:
布局文件中使用fragment,用來實(shí)現(xiàn)對(duì)BaiduMap的加載;
class="com.baidu.mapapi.map.SupportMapFragment"
當(dāng)前Activity繼承于FragementActivity;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
備注:該兩句話必須放在setContentView()之前。
初始化BaiduMap對(duì)象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch對(duì)象;
PoiSearch.newInstance();
給PoiSearch對(duì)象設(shè)置監(jiān)聽器;
setOnGetPoiSearchResultListener(),重寫onGetPoiResult()方法;
自定義PoiOverlay類,實(shí)現(xiàn)對(duì)每個(gè)標(biāo)記的單擊監(jiān)聽;
通過onPoiClick()方法,獲取每個(gè)PoiInfo中的信息。如果這個(gè)對(duì)象中包含有明細(xì),可以打開一個(gè)新頁(yè)面來展示興趣點(diǎn)的詳細(xì)介紹。
在AndroidManifest.xml文件中配置PlaceCaterActivity頁(yè)面;
該頁(yè)面是Baidu提供的POI的明細(xì)介紹頁(yè)面。
PoiSearch對(duì)象調(diào)用searchInBound()、searchInCity() 、 searchNearby()方法實(shí)現(xiàn)興趣點(diǎn)查詢。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap,PoiSearch對(duì)象;
PoiSearch對(duì)象設(shè)置OnGetPoiSearchResultListener()監(jiān)聽;
PoiSearch對(duì)象調(diào)用searchInCity()方法觸發(fā)監(jiān)聽。
(四)、線路規(guī)劃:
1、實(shí)現(xiàn)路線規(guī)劃的操作步驟:
布局文件中使用MapView,用來實(shí)現(xiàn)對(duì)BaiduMap的加載;
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化MapView;
調(diào)用findViewById()
初始化BaiduMap對(duì)象;
baiduMap = MapView對(duì)象.getMap();
初始化RoutePlanSearch對(duì)象;
RoutePlanSearch.newInstance();
給RoutePlanSearch對(duì)象設(shè)置監(jiān)聽器;
setOnGetRoutePlanResultListener(),重寫onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult()方法;
自定義三種RouteOverlay類(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);
調(diào)用RoutePlanSearch對(duì)象的三種方法(drivingSearch()、transitSearch()、walkingSearch())實(shí)現(xiàn)路線規(guī)劃。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap,RoutePlanSearch對(duì)象;
RoutePlanSearch對(duì)象設(shè)置OnGetRoutePlanResultListener監(jiān)聽;
RoutePlanSearch對(duì)象調(diào)用drivingSearch()、transitSearch()、walkingSearch()方法觸發(fā)監(jiān)聽。
(五)、公交查詢:
1、實(shí)現(xiàn)公交查詢的操作步驟:
布局文件中使用fragment,用來實(shí)現(xiàn)對(duì)BaiduMap的加載;
class="com.baidu.mapapi.map.SupportMapFragment"
初始化SDK,并檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
當(dāng)前Activity繼承于FragementActivity;
初始化BaiduMap對(duì)象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch對(duì)象/初始化BusLineSearch對(duì)象;
PoiSearch.newInstance();
BusLineSearch.newInstance();
給BusLineSearch對(duì)象設(shè)置監(jiān)聽器;
setOnGetBusLineSearchResultListener(),重寫onGetBusLineResult()方法;
給PoiSearch對(duì)象設(shè)置監(jiān)聽器;
setOnGetPoiSearchResultListener(),重寫onGetPoiResult()方法;
在這個(gè)監(jiān)聽器中調(diào)用BusLineSearch對(duì)象的searchBusLine()方法;
給按鈕增加單擊監(jiān)聽事件,實(shí)現(xiàn)PoiSearch對(duì)象的searchInBound()、searchInCity() 、 searchNearby()方法實(shí)現(xiàn)興趣點(diǎn)查詢。
【總結(jié):】核心步驟:
實(shí)例化BaiduMap、PoiSearch對(duì)象及BusLineSearch對(duì)象;
PoiSearch對(duì)象設(shè)置OnGetPoiSearchResultListener()監(jiān)聽;BusLineSearch對(duì)象設(shè)置OnGetBusLineSearchResultListener監(jiān)聽;
在PoiSearch對(duì)象的監(jiān)聽回調(diào)方法onGetPoiResult()中調(diào)用busLineSearch對(duì)象的searchBusLine()方法;
PoiSearch對(duì)象調(diào)用searchInCity()方法觸發(fā)整個(gè)監(jiān)聽。
【備注:】
整體思路:先調(diào)用POI查詢,在POI查詢中的監(jiān)聽器中執(zhí)行BusLine查詢。
1.首先把離線地圖放在android工程下的assets里面。
注意:建議離線地圖下載通過百度地圖APIDEMO去下載,因?yàn)榈焦倬W(wǎng)上下載的離線地圖文件格式不一樣,APIDEMO的格式是.dat,而官網(wǎng)上的格式是.dat_svc有可能加載不了地圖.
2.把離線地圖從assets下拷貝到sd卡下
public static void copy(Context context) {
try {
String filepath = Environment.getExternalStorageDirectory() + "/"
+ "BaiduMapSDK" + "/" + "vmp" + "/" + "h" + "/"
+ "xxxxx.dat";
String path = Environment.getExternalStorageDirectory() + "/"
+ "BaiduMapSDK" + "/" + "vmp" + "/" + "h" + "/";
File file = new File(path);
在Android應(yīng)用中使用百度地圖api方法如下:
下載百度地圖移動(dòng)版API(Android)開發(fā)包,要在Android應(yīng)用中使用百度地圖API,就需要在工程中引用百度地圖API開發(fā)包,這個(gè)開發(fā)包包含兩個(gè)文件:baidumapapi.jar和libBMapApiEngine.so。
申請(qǐng)API Key,和使用Google map api一樣,在使用百度地圖API之前也需要獲取相應(yīng)的API Key。百度地圖API Key與你的百度賬戶相關(guān)聯(lián),因此您必須先有百度帳戶,才能獲得API Key;并且,該Key與您引用API的程序名稱有關(guān)。
百度API Key的申請(qǐng)要比Google的簡(jiǎn)單多了,其實(shí)只要你有百度帳號(hào),應(yīng)該不超過30秒就能完成API Key的申請(qǐng)。
創(chuàng)建一個(gè)Android工程,這里需要強(qiáng)調(diào)一點(diǎn):百度地圖移動(dòng)版api支持Android 1.5及以上系統(tǒng),因此我們創(chuàng)建的工程應(yīng)基于Android SDK 1.5及以上。
工程創(chuàng)建完成后,將baidumapapi.jar和libBMapApiEngine.so分別拷貝到工程的根目錄及l(fā)ibs/armeabi目錄下,并在工程屬性-Java Build Path-Libraries中選擇“Add JARs”,選定baidumapapi.jar,這樣就可以在應(yīng)用中使用百度地圖API了
公司項(xiàng)目中有地圖展示和定位功能,使用uniapp本以為應(yīng)該很是容易,應(yīng)該有現(xiàn)成的空間,去插件市場(chǎng)一找,大部分的插件都是針對(duì)H5的,對(duì)于app端很少,要不就是需要花錢,這才自己動(dòng)手實(shí)現(xiàn)。
公司過去的項(xiàng)目使用的是百度地圖,所以u(píng)niapp也就只能使用百度地圖了,但是一看官方文檔:就是沒有百度地圖。
在網(wǎng)上搜了一堆,需要使用使用到自定義基座,才能使用,那就只能通過自定義基座看看效果。
1.首先去 百度地圖開發(fā)者平臺(tái)申請(qǐng)
這里主要是對(duì)安卓端進(jìn)行操作(這里的包名和下邊創(chuàng)建基座的包名一致)
2.申請(qǐng)后再Hbuilder中manifest.json 中配置
3.制作基座
切記:Android包名一定要和百度地圖開發(fā)平臺(tái)中的一致
一、定位
1.創(chuàng)建獲取定位的類fun.js
2.主類main.js中引入
3.需要的類中使用
輸出結(jié)果:
二、地圖展示
一開始的時(shí)候,我總是試圖尋找百度地圖是不是對(duì)uniapp這個(gè)平臺(tái)有單獨(dú)的API,但是很可惜沒有。在百度地圖引入后,直接調(diào)用uniapp給的map組件,可以展示出地圖,但是很多的屬性不支持,也找不到相關(guān)的處理文檔。沒辦法,上網(wǎng)查找,大部分的處理方案是通過動(dòng)態(tài)引入百度地圖JavaScript API GL框架,進(jìn)行展示。
這個(gè)地方,我們需要在百度地圖開發(fā)者平臺(tái)申請(qǐng)web前端的開發(fā)的key
1.百度地圖開發(fā)者控制平臺(tái),創(chuàng)建web端應(yīng)用
2.創(chuàng)建動(dòng)態(tài)引入百度地圖的script類map.js
3.使用(這里使用到了renderjs),切記如果需要開文檔,查看JavaScript API GL相關(guān)文檔
4.運(yùn)行效果
這樣地圖的定位和地圖展示基本就完成了,如果需要更加復(fù)雜的功能只能去查看百度的官方文檔
先看一下百度地圖API縮放級(jí)別和比例尺的大小關(guān)系。
百度地圖API一共分為19級(jí),比例尺分別為:
[1:20米(簡(jiǎn)稱20米,后同),50米,100米,200米,500米,1公里,2公里,5公里,10公里,20公里,25公里,50公里,100公里,200公里,500公里,1000公里,2000公里,5000公里,10000公里]
分別對(duì)應(yīng):
[19級(jí),18級(jí),17級(jí),16級(jí),15級(jí),14級(jí),13級(jí),12級(jí),11級(jí),10級(jí),9級(jí),8級(jí),7級(jí),6級(jí),5級(jí),4級(jí),3級(jí),2級(jí),1級(jí)]
網(wǎng)頁(yè)標(biāo)題:百度地圖android,百度地圖導(dǎo)航2021最新版
轉(zhuǎn)載注明:http://chinadenli.net/article4/dseojie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)