中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 關于百度地圖Android SDK幾處修正使用說明(非官方)

發布時間:2020-07-18 12:16:32 來源:網絡 閱讀:1444 作者:我不會抽煙 欄目:移動開發

本篇主要是因為最近在學習使用百度地圖,發現了一些問題,跟大伙分享一下。

1、根據android sdk開發指南中“Hello World”的例子,構建一個基礎的地圖頁面,如果大家完全按照示例代碼中所寫的那樣,是不會執行成功的,會有以下問題的錯誤提示“java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

這個問題出現的原因是

在第二步,配置Activity部分,android:name的值為.MapDemo,而在第四步,創建地圖Activity處,創建的Activity繼承類名寫的卻是MyMapActivity。如果你想讓在AndroidManifest.xml中配置Activity時的.MapDemo為起始的Activity,除了要在<Activity></Activity>之間加上以下這段代碼之外

<intent-filter>
    <actionandroid:name="android.intent.action.MAIN"/>   
    <categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>

還要把android:name的.MapDemo改成你當前項目的“包名+MyMapActivity”或者直接寫“MyMapActivity”,這樣再執行就會構建出一個基礎的百度地圖。

這個問題其實也是一個Android開發的基礎問題,也算是對我這個Android半吊子一個知識點的鞏固。下面針對這個問題的出現回顧以下知識點:

(1)AndroidManifest.xml作為項目的布局文件,時時刻刻把握整個項目命脈,項目啟動時,要設置啟動項,權限不夠時,要加相應的權限設置。

(2)在AndroidManifest.xml中配置的Activity如何與src中的.java文件聯系在一起呢?就是依靠配置的該Activity中的android:name的值要完全與.java文件中的類名一致。

(3)而“后臺”的.java文件又是如何與“前臺”的res/layout中的activity布局文件聯系在一起的呢(請允許我用前后臺這樣的非專業術語來說,因為自己主做web開發,這樣說感覺比較形象)?就是通過.java文件中,繼承Activity類的新類的OnCreate方法中

setContentView(R.layout.activity_main)

這樣的一條語句搞定的,這里的activity_main即是布局文件的名字而已。

由以上的幾條我們會發現Android開發中,主要的兩個東西都是靠名稱去匹配的,所以我們在開發中一定要在這方面多多注意,至于是不是其他的東西也是依賴名稱去匹配,就需要我們去不斷在開發中發現。

2、說的第二個問題是關于坐標的,在百度地圖給出的源碼中,我們會發現類似這樣的語句

GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));

翻譯一下就是創建一個GeoPoint類型的緯度為39.915度,經度為116.404度的坐標點,為什么要*1E6,是為了把傳入的經度,緯度轉換成微度,就是在原基礎上乘以10的-6次冪。至于GeoPoint中到底是什么樣,那都是百度封裝好的,所以我也懶著去關心了,大家知道跟坐標點有關就行了。

不過這里容易出現一個小問題,就是我們習慣性的會認為寫坐標點的時候是這種格式“經度,緯度”,而這個方法的構造函數完全是相反的。當然,這不算什么,但是問題就出在,在百度地圖官方給出的“拾取坐標系統”工具(鏈接:http://api.map.baidu.com/lbsapi/getpoint/index.html,這個東東還是很實用的,如果我們做地圖開發沒有它,那就沒戲啦,它主要就是坐標-地址的查詢工具)中,使用的坐標點形式就是“經度,緯度”,有點把我們帶偏的感覺。所以容易搞錯,這塊要注意一下,否則坐標都在十萬八千里之外了。

PS:經度(longitude),緯度(latitude)

3、關于定位SDK的,這個問題真心的很坑人。下午耗了幾個小時,真不爽。

雖然標題說的是android sdk,

在百度地圖官方定位SDK處可謂是非常詳細,把如何構建基礎定位功能的步驟已經詳細給我們列出,但這里有個小瑕疵我不得不說,達到了令人發指的地步。

先來簡單回顧一下百度地圖官方給出的東東

在V4.1版本的第3點,功能類的使用,3.1.1初始化LocationClient類 小節

public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
               
publicvoid onCreate() {
    mLocationClient = new LocationClient(getApplicationContext());     //聲明LocationClient類
    mLocationClient.registerLocationListener( myListener );    //注冊監聽函數
}

3.1.3設置定位參數 小節

LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);//設置定位模式
option.setCoorType("bd09ll");//返回的定位結果是百度經緯度,默認值gcj02
option.setScanType(5000);//設置發起定位請求的間隔時間為5000ms
option.setIsNeedAddress(true);//返回的定位結果包含地址信息
option.setNeedDeviceDirect(true);//返回的定位結果包含手機機頭的方向
mLocClient.setLocOption(option);

對了這處的第4行setScanType方法請改寫成setScanSpan。之所以寫錯可能是先前版本的成員方法名,在這個版本中已經不再存在。

3.1.4發起定位請求 小節

if (mLocClient != null && mLocClient.isStarted())
  mLocClient.requestLocation();
else
 Log.d("LocSDK3", "locClient is null or not started");

乍一看條理非常的清晰,先聲明類,綁定方法,如果有特殊要求,再加個option的設置,最后驗證對象是否為空,不為空就執行最終的請求定位,多完美啊!~

但是如果我們就這樣執行了,那么就會發現log中一直出現“locClient is null or not started”這句話,我試了N多遍,都有了想吐血的沖動(請原諒我的吐槽),最后通過對定位sdk的sample一行一行去找才發現了問題(之所以一行一行的找,是因為把項目導入本地工程之后,各種紅,運行不了),原因就在于,在對LocationClient類實例調用requestLocation()方法之前,一定要調用一下start()方法,像這樣:

mLocationClient.start();

哦~~那是什么?對的,開發指南中并沒有寫出來。應該是一個使LocationClient實例啟動的方法,所以后面if條件句中的isStarted()我們也就明白是怎么回事了。

4、接著說一下如何成功在本地運行Android SDK給出的“BaiduMap_AndroidSDK_v2.4.1_Sample”示例,這是官方的一個Demo,為我們展示了在Android SDK下的各個功能模塊。

如果大家細心讀了百度地圖的使用規則,就知道如果我們想使用百度地圖API,就必須申請對應的KEY,而申請KEY的關鍵,我總結的話就是在安全碼上,下面只說Android SDK安全碼組成:數字簽名+;+包名

其實這部分百度地圖申請KEY的《查看詳細配置方法》里已經詳細說明。我只是想說這里的包名,要寫成我們下載下來的示例包名:baidumapsdk.demo。

這塊可能對大多數朋友來說順理成章,我之所以說一下是因為第一次申請KEY,而且是先創建了一個本地項目,又沒有直接去運行Sample,所以當時就有點懵,誤把針對自己項目的KEY當成可以在Sample上使用的KEY。

這塊大家沒遇到這個問題就從腦子里抹去吧。


隨著一步步的探索,慢慢的就能跟隨自己的想法來使用百度地圖去設計一些小功能了,之后也遇到了一些問題,不過感覺解決的都很快,這里就不一一詳述了,都是些小問題。如果大家遇到其他Android SDK上的問題比較頭大,我們可以交流一下。

另外,這幾天通過對百度地圖API的學習,也看到了差距,自己還是要不斷的去學習,提升自己,向度娘看齊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武功县| 凤凰县| 梁平县| 平度市| 七台河市| 繁峙县| 黄陵县| 随州市| 成武县| 通榆县| 石楼县| 建始县| 永平县| 新巴尔虎左旗| 成武县| 河源市| 杂多县| 尤溪县| 商水县| 息烽县| 舟曲县| 富源县| 罗甸县| 桐梓县| 新野县| 利川市| 榆树市| 安溪县| 精河县| 贞丰县| 尤溪县| 临洮县| 内黄县| 府谷县| 鞍山市| 金川县| 福清市| 英超| 商河县| 苍梧县| 迭部县|