『壹』 android百度地圖怎麼開發
網路地圖
一、基本概念:
(一)、網路地圖:
網路地圖 Android SDK是一套基於Android 2.1及以上版本設備的應用程序介面。 您可以使用該套 SDK開發適用於Android系統移動設備的地圖應用,通過調用地圖SDK介面,您可以輕松訪問網路地圖服務和數據, 構建功能豐富、交互性強的地圖類應用程序。
網路地圖Android SDK提供的所有服務是免費的,介面使用無次數限制。您需申請密鑰(key)後, 才可使用網路地圖Android SDK。
(二)、LBS:(Location based Service)基於位置的服務
基於位置的服務,它是通過電信移動運營商的無線電通訊網路(如GSM網、CDMA網)或外部定位方式(如GPS)獲取移動終端用戶的位置信息(地理坐標,或大地坐標),在地理信息系統(外語縮寫:GIS、外語全稱:Geographic Information System)平台的支持下,為用戶提供相應服務的一種增值業務。
二、網路地圖使用步驟:【參照(http://developer..com/map/sdk-android.htm)】
(一)、HelloBaiMap:
1、第一步:申請網路地圖密鑰(API_KEY):
http://developer..com/map/sdk-android.htm
2、第二步:在工程里新建libs文件夾,將開發包里的mapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網demo里已有這兩個文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成後的工程目錄如下圖所示;
註:liblocSDK3.so和locSDK_3.1.jar為網路定位SDK所使用資源,開發者可根據實際需求自行添加。
3、第三步:在AndroidManifest中添加開發密鑰、所需許可權等信息;
<application
<meta-data
android:name="com..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..mapapi.map.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/>
5、第五步:在應用程序創建時初始化 SDK引用的Context 全局變數:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實現
SDKInitializer.initialize(getApplicationContext());
// 裝載布局文件
setContentView(R.layout.activity_main);
}
6、第六步:創建地圖Activity,管理地圖生命周期:
publicclass MainActivity extends Activity {
private MapView mapView;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實現
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();
}
}
(二)、基礎地圖:
1、實現基礎地圖的操作步驟:
布局文件中使用MapView;
初始化SDK,並檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化BaiMap對象;
對MapView進行findViewById();
MapView對象調用getMap(),返回BaiMap;
設置BaiMap;
setMapType();
setTrafficEnabled();
(三)、POI搜索:
1、實現POI搜索的操作步驟:
布局文件中使用fragment,用來實現對BaiMap的載入;
class="com..mapapi.map.SupportMapFragment"
當前Activity繼承於FragementActivity;
初始化SDK,並檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
備註:該兩句話必須放在setContentView()之前。
初始化BaiMap對象;
Map = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiMap();
初始化PoiSearch對象;
PoiSearch.newInstance();
給PoiSearch對象設置監聽器;
(),重寫onGetPoiResult()方法;
自定義PoiOverlay類,實現對每個標記的單擊監聽;
通過onPoiClick()方法,獲取每個PoiInfo中的信息。如果這個對象中包含有明細,可以打開一個新頁面來展示興趣點的詳細介紹。
在AndroidManifest.xml文件中配置PlaceCaterActivity頁面;
該頁面是Bai提供的POI的明細介紹頁面。
PoiSearch對象調用searchInBound()、searchInCity() 、 searchNearby()方法實現興趣點查詢。
【總結:】核心步驟:
實例化BaiMap,PoiSearch對象;
PoiSearch對象設置OnGetPoiSearchResultListener()監聽;
PoiSearch對象調用searchInCity()方法觸發監聽。
(四)、線路規劃:
1、實現路線規劃的操作步驟:
布局文件中使用MapView,用來實現對BaiMap的載入;
初始化SDK,並檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化MapView;
調用findViewById()
初始化BaiMap對象;
Map = MapView對象.getMap();
初始化RoutePlanSearch對象;
RoutePlanSearch.newInstance();
給RoutePlanSearch對象設置監聽器;
(),重寫onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult()方法;
自定義三種RouteOverlay類(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);
調用RoutePlanSearch對象的三種方法(drivingSearch()、transitSearch()、walkingSearch())實現路線規劃。
【總結:】核心步驟:
實例化BaiMap,RoutePlanSearch對象;
RoutePlanSearch對象設置OnGetRoutePlanResultListener監聽;
RoutePlanSearch對象調用drivingSearch()、transitSearch()、walkingSearch()方法觸發監聽。
(五)、公交查詢:
1、實現公交查詢的操作步驟:
布局文件中使用fragment,用來實現對BaiMap的載入;
class="com..mapapi.map.SupportMapFragment"
初始化SDK,並檢查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
當前Activity繼承於FragementActivity;
初始化BaiMap對象;
Map = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiMap();
初始化PoiSearch對象/初始化BusLineSearch對象;
PoiSearch.newInstance();
BusLineSearch.newInstance();
給BusLineSearch對象設置監聽器;
(),重寫onGetBusLineResult()方法;
給PoiSearch對象設置監聽器;
(),重寫onGetPoiResult()方法;
在這個監聽器中調用BusLineSearch對象的searchBusLine()方法;
給按鈕增加單擊監聽事件,實現PoiSearch對象的searchInBound()、searchInCity() 、 searchNearby()方法實現興趣點查詢。
【總結:】核心步驟:
實例化BaiMap、PoiSearch對象及BusLineSearch對象;
PoiSearch對象設置OnGetPoiSearchResultListener()監聽;BusLineSearch對象設置監聽;
在PoiSearch對象的監聽回調方法onGetPoiResult()中調用busLineSearch對象的searchBusLine()方法;
PoiSearch對象調用searchInCity()方法觸發整個監聽。
【備註:】
整體思路:先調用POI查詢,在POI查詢中的監聽器中執行BusLine查詢。
『貳』 注冊成為百度開發者,並獲取百度地圖應用AK,下載百度地圖jar包並導入Android項目
要成為網路開發者並獲取網路地圖應用AK,首先訪問網路開發者中心首頁(developer..com/),注冊一個網路開發者賬號。
注冊後,進入網路地圖服務首頁(lbsyun..com/),設置密鑰。密鑰用於驗證服務使用者的身份,限制每天免費使用地圖服務的次數。完成注冊並領取秘鑰。
接著,創建一個Android SDK類型的應用,填寫必要的信息,以便在調用地圖服務時驗證身份。在此過程中,需獲得發布版SHA1和開發版SHA1,分別從keystore文件和AndroidStudio中獲取,以及應用的包名。
獲取SHA1後,訪問網路地圖開放平台首頁,選擇「開發文檔-Android地圖SDK(Android地圖SDK | 網路地圖API SDK)」,自定義下載。選「基礎地圖」、「檢索」、「JAR」和「標准開發包」,點擊「開發包」按鈕下載網路地圖SDK。
下載完成後,將下載的jar包引入到AndroidStudio項目中。在項目中添加jar包後,執行Sync操作,完成導入。
至此,您已成功注冊成為網路開發者並獲取網路地圖應用AK,下載並導入網路地圖jar包至Android項目中,為您的應用集成網路地圖服務做好了充分准備。
『叄』 Android集成百度地圖為什麼一直定位到非洲
在安卓6.0以後,谷歌對一些危險許可權有一些設定,其中定位許可權就包括在九大危險許可權之中。所以想要准確定位,就需要我們在Java代碼中動態添加我們需要的許可權。
用戶手動申請許可權
private void requestPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//第一次被拒絕後,第二次訪問時,向用戶說明為什麼需要此許可權
if (ActivityCompat.(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {
Toast.makeText(this, "開啟後使用定位功能", Toast.LENGTH_SHORT).show();
}
//若許可權沒有開啟,則請求許可權
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, Location_Permission);
} }
當用戶選擇接受或者拒絕時,申請許可權會執行一個回調
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == Location_Permission) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//請求許可權成功,做相應的事情 } else {
//請求失敗則提醒用戶
Toast.makeText(DidiActivity.this, "請求許可權失敗!", Toast.LENGTH_SHORT).show();
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
在申請之前,我們要判斷一下是否為安卓6.0機型
if (Build.VERSION.SDK_INT >= 23) {
requestPermission(); }
『肆』 android studio 怎麼導入百度地圖包
一、網路地圖提供Eclipse和Android Studio兩種Demo例子,使用例子的時候,查看一下「TeachCourse學習mole導入Android Studio的兩種方式」。
二、如果使用下載的jar包集成開發,參考下面的步驟:
1、在Android Studio創建mole的目錄下,新建libs文件夾,該文件夾默認不存在