使用MapLibre 適用於安卓系統的GL 本機SDK 與亞馬遜 ...
文章推薦指數: 80 %
使用MapLibre GL 原生SDK 將交互式地圖嵌入到您的Android 應用程序中。
使用MapLibre適用於安卓系統的GL本機SDK與亞馬遜LocationService-AmazonLocationServiceAWS文件AmazonLocationService開發人員指南初始化組態活動配置請求轉換主要活動本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用MapLibre適用於安卓系統的GL本機SDK與亞馬遜LocationService使用MapLibreGL原生SDK將交互式地圖嵌入到您的Android應用程序中。
所以此MapLibre適用於安卓的GL本機SDK是一個基於映射框GL原生,並且與亞馬遜LocationService地圖API提供的樣式和磁貼兼容。
您可以集成MapLibreGL原生SDKforAndroid的軟件開發工具包,在Android應用程序中嵌入交互式地圖和可擴展的可自定義矢量映射。
本教學課程介紹如何將MapLibre適用於安卓的GL本機SDK,具有亞馬遜位置。
本教程的示例應用程序可作為亞馬遜LocationService示例存儲庫的一部分提供,GitHub。
建置應用程式:初始化
初始化應用程序:
創建一個新的安卓工作室項目空白活動Template
確認科特林為項目語言選擇。
選取API14的最低軟件開發工具包:安卓4.0(冰淇淋三明治)或更新版本。
開啟項目結構,然後前往File(檔案)>專案結構...以選擇相依性區段。
搭配
AddAWSAndroid開發套件2.20.0版或更新版本。
例如:com.amazonaws:aws-android-sdk-core:2.20.0
新增適用Android的MapLibreGL原生開發套件9.4.0版或更新版本。
例如:org.maplibre.gl:android-sdk:9.4.0
在您的項目級別建立.gradle文件中,添加以下Maven存儲庫來訪問適用於Android的MapLibre軟件包:
allprojects{
repositories{
//Retainyourexistingrepositories
google()
jcenter()
//DeclaretherepositoriesforMapLibre
mavenCentral()
}
}
建置應用程式:組態
要使用您的資源和AWS區域:
這也將設置地圖的初始中心點。
新增TextView,其中顯示歸因。
屬性字符串包含在樣式描述符響應中sources.esri.attribution和sources.here.attributionkeys。
將亞馬遜位置資源與數據提供程序,請確保閲讀服務條款和條件。
建置應用程式:請求轉換
建置一個名為SigV4Interceptor攔截AWS請求並使用Signature第4版。
這將在創建主活動時註冊到用於獲取映射資源的HTTP客户端。
packageaws.location.demo.okhttp
importcom.amazonaws.DefaultRequest
importcom.amazonaws.auth.AWS4Signer
importcom.amazonaws.auth.AWSCredentialsProvider
importcom.amazonaws.http.HttpMethodName
importcom.amazonaws.util.IOUtils
importokhttp3.HttpUrl
importokhttp3.Interceptor
importokhttp3.Request
importokhttp3.Response
importokio.Buffer
importjava.io.ByteArrayInputStream
importjava.net.URI
classSigV4Interceptor(
privatevalcredentialsProvider:AWSCredentialsProvider,
privatevalserviceName:String
):Interceptor{
overridefunintercept(chain:Interceptor.Chain):Response{
valoriginalRequest=chain.request()
if(originalRequest.url().host().contains("amazonaws.com")){
valsigner=if(originalRequest.url().encodedPath().contains("@")){
//thepresenceof"@"indicatesthatitdoesn'tneedtobedoubleURL-encoded
AWS4Signer(false)
}else{
AWS4Signer()
}
valawsRequest=toAWSRequest(originalRequest,serviceName)
signer.setServiceName(serviceName)
signer.sign(awsRequest,credentialsProvider.credentials)
returnchain.proceed(toSignedOkHttpRequest(awsRequest,originalRequest))
}
returnchain.proceed(originalRequest)
}
companionobject{
funtoAWSRequest(request:Request,serviceName:String):DefaultRequest
這涉及:
實例化AmazonCognitoCredentialsProvider。
註冊簽章第4版攔截器。
通過將地圖指向地圖樣式描述符並顯示相應的屬性來配置地圖。
MainActivity還負責將生命週期事件轉發到地圖視圖,從而允許它在調用之間保留活動視區。
packageaws.location.demo.maplibre
importandroid.os.Bundle
importandroid.widget.TextView
importandroidx.appcompat.app.AppCompatActivity
importaws.location.demo.okhttp.SigV4Interceptor
importcom.amazonaws.auth.CognitoCachingCredentialsProvider
importcom.amazonaws.regions.Regions
importcom.mapbox.mapboxsdk.Mapbox
importcom.mapbox.mapboxsdk.maps.MapView
importcom.mapbox.mapboxsdk.maps.Style
importcom.mapbox.mapboxsdk.module.http.HttpRequestUtil
importokhttp3.OkHttpClient
privateconstvalSERVICE_NAME="geo"
classMainActivity:AppCompatActivity(){
privatevarmapView:MapView?=null
overridefunonCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
//configuration
validentityPoolId=getString(R.string.identityPoolId)
valregion=getString(R.string.awsRegion)
valmapName=getString(R.string.mapName)
//Credentialinitialization
valcredentialProvider=CognitoCachingCredentialsProvider(
applicationContext,
identityPoolId,
Regions.fromName(identityPoolId.split(":").first())
)
//initializeMapLibre
Mapbox.getInstance(this,null)
HttpRequestUtil.setOkHttpClient(
OkHttpClient.Builder()
.addInterceptor(SigV4Interceptor(credentialProvider,SERVICE_NAME))
.build()
)
//initializetheview
setContentView(R.layout.activity_main)
//initializethemapview
mapView=findViewById(R.id.mapView)
mapView?.onCreate(savedInstanceState)
mapView?.getMapAsync{map->
map.setStyle(
Style.Builder()
.fromUri("https://maps.geo.${region}.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor")
){style->
findViewById
此示例作為亞馬遜LocationService示例存儲庫的一部分提供,位於GitHub。
文件慣用形式MapLibreGLJS適用iOS的MapLibrationGL原生開發套件此頁面是否有幫助?-是感謝您,讓我們知道我們做得很好!若您有空,歡迎您告知我們值得讚許的地方,這樣才能保持良好服務。
此頁面是否有幫助?-否感謝讓我們知道此頁面仍須改善。
很抱歉,讓您失望。
若您有空,歡迎您提供改善文件的方式。
延伸文章資訊
- 1Vital GL (General Ledger) 會計總帳 - 遠距上班軟體工具網站
Vital GL 為適合中小企業及外商的會計系統,提供中文、英文、日文等各式會計報表。GL 具備高度彈性設計,可自訂您專屬的會計科目及傳票輸入介面,讓企業輕鬆管理帳目。
- 2得億發票機精簡進銷存管理系統GL (買斷價) | 蝦皮購物
得億精簡進銷存管理系統GL 是針對一般還在使用Excel記帳或是用帳簿手寫的小企業主所設計的專用軟體。使用得億精簡進銷存管理系統GL 讓您從此擺脫手寫記帳時的不便以及 ...
- 3《系統要我當地主gl》作者:方便面君_線上閱讀介紹 - 思兔阅读
《系统要我当地主gl》方便面君. 分类:百合大小:920k 点评:11条 猫小小喵 上載於:2020/2/7. Sponsored Links. 勤劳能干人美心善靠种田卖菜养家的唐枝,跟隔壁家 ...
- 4GL 全功能網路品質測試 - 派恩科技有限公司
GL Communications長期和全球主要電信設備供應商和系統整合業者合作,以滿足電信產品開發各個階段產生的測試要求。 以超過30年的的專業知識,GL 擁有全面的電信測試 ...
- 5使用MapLibre 適用於安卓系統的GL 本機SDK 與亞馬遜 ...
使用MapLibre GL 原生SDK 將交互式地圖嵌入到您的Android 應用程序中。