日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android实战开发--三种地图类型的设计

發(fā)布時間:2023/12/9 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实战开发--三种地图类型的设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

前言

一、要求

二、申請AK密鑰

三、關(guān)鍵代碼分析

四、全部代碼

五、結(jié)果


前言

這個項目是老早時候做的了,今天突然想寫博客記錄一下。首先需要安裝配置好Java開發(fā)環(huán)境,并選擇任意一款A(yù)ndroid開發(fā)工具進行編程,推薦下載安裝Android Studio軟件進行程序開發(fā)。在開始進行Android編程開發(fā)之前需要對Java基礎(chǔ)知識有一定的了解和掌握。在開始之前,記得導(dǎo)入定位及地圖的相關(guān)jar包,Android Studio用gradle管理依賴(當(dāng)然maven倉庫也是管理依賴的一個比較好的工具)。

一、要求

結(jié)合百度地圖開放平臺:百度地圖開放平臺 | 百度地圖API SDK | 地圖開發(fā)或者高德地圖開放平臺:高德開放平臺 | 高德地圖API實現(xiàn)Android地圖開發(fā)功能小案例,需求如下(以百度地圖開放平臺開發(fā)為例):

1、通過添加View控件顯示地圖,能夠顯示出地圖的默認(rèn)位置、地圖名稱等信息。

2、實現(xiàn)切換地圖類型的功能,對于地圖SDK提供了3種主要的地圖類型,即普通地圖、衛(wèi)星圖和空白地圖。用戶通過點擊對應(yīng)的按鈕,能夠?qū)崿F(xiàn)不同類型地圖之間的相互切換功能。

二、申請AK密鑰

1、首先找到一個地圖開放平臺,這里以百度地圖開放平臺為例,步驟如下:進入百度地圖開放平臺,拉到最底下,進行登錄注冊,然后進入應(yīng)用管理,點擊創(chuàng)建應(yīng)用。

2、輸入應(yīng)用名稱,可以自己隨意編輯,比如輸入:地圖,然后選擇應(yīng)用類型:Android SDK。啟用服務(wù)不用管,系統(tǒng)默認(rèn)的就行,輸入發(fā)布版的SHA1密鑰。

3、獲取SHA1密鑰?。

(1) 運行進入控制臺:運行 -> 輸入cmd -> 確定

(2)在控制臺內(nèi),定位到.android文件夾,輸入cd .android

(3)輸入keytool -list -v -keystore debug.keystore,會得到三種指紋證書,選取SHA1類型的證書(密鑰口令是android,如有申請過可以直接回車)

(4)最后輸入你應(yīng)用的包名,然后點擊“提交”完成應(yīng)用的配置工作,就會得到一個創(chuàng)建的AK密鑰。

三、關(guān)鍵代碼分析

1、首先獲取各種權(quán)限,包括網(wǎng)絡(luò)權(quán)限等,在AndroidManifest.xml中配置

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_SYNC_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.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /><uses-permission android:name="android.permission.READ_PHONE_STATE"/>

2、添加開發(fā)秘鑰apikey,需要去百度地圖開放平臺申請,見步驟二

<meta-data android:name="com.baidu.lbsapi.API_KEY"android:value="你的秘鑰"/>

3、初始化及獲取地圖控件引用?,在使用SDK各組件之前初始化context信息,傳入ApplicationContext,注意該方法要在setContentView方法之前實現(xiàn)

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//在使用SDK各組件之前初始化context信息,傳入ApplicationContextSDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);//獲取地圖控件引用myMap = (MapView) findViewById(R.id.bmapView);mBaiduMap=myMap.getMap();Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);}

4、用分支語句實現(xiàn)地圖樣式的切換?

public void setMapMode(View view) {boolean checked = ((RadioButton) view).isChecked();switch (view.getId()) {case R.id.normal:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);}break;case R.id.statellite:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);}break;case R.id.blank:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);}break;default:break;}}

5、地圖生命周期的管理

onResume():是在啟動activity啟動之后才能執(zhí)行的,也就是恢復(fù)執(zhí)行。

onPause():當(dāng)Activity進入后臺并且該Activity并未被銷毀時,該方法會被調(diào)用。

onDestroy():生命周期的銷毀操作。

@Overrideprotected void onResume() {super.onResume();//在activity執(zhí)行onResume時執(zhí)行myMap.onResume(),實現(xiàn)地圖生命周期管理myMap.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity執(zhí)行onPause時執(zhí)行myMap.onPause(),實現(xiàn)地圖生命周期管理myMap.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity執(zhí)行onDestroy時執(zhí)行myMap.onDestroy(),實現(xiàn)地圖生命周期管理myMap.onDestroy();}

四、全部代碼

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"tools:context="com.android.mybd.MainActivity"><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:theme="@style/AppTheme.AppBarOverlay"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="#000"app:popupTheme="@style/AppTheme.PopupOverlay"app:titleTextColor="#FDFCFC"/></android.support.design.widget.AppBarLayout><include layout="@layout/content_main" /></android.support.design.widget.CoordinatorLayout>

content_main.xml:?

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:context="com.android.mybd.MainActivity"tools:showIn="@layout/activity_main"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioGroupandroid:id="@+id/RadioGroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="2"android:background="#2E2A2A"android:orientation="horizontal"><RadioButtonandroid:id="@+id/normal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:onClick="setMapMode"android:text="普通圖"android:layout_marginLeft="5dp"android:textColor="#FFF"tools:ignore="OnClick" /><RadioButtonandroid:id="@+id/statellite"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:onClick="setMapMode"android:text="衛(wèi)星圖"android:textColor="#FFF"tools:ignore="OnClick" /><RadioButtonandroid:id="@+id/blank"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:onClick="setMapMode"android:text="空白地圖"android:textColor="#FFF"tools:ignore="OnClick" /></RadioGroup><Buttonandroid:id="@+id/btn_01"android:layout_width="80dp"android:layout_height="match_parent"android:background="#131313"android:gravity="center"android:text="清除緩存"android:textColor="#FFF" /></LinearLayout> </RelativeLayout>

?AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.android.mybd"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_SYNC_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.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /><uses-permission android:name="android.permission.READ_PHONE_STATE"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><meta-data android:name="com.baidu.lbsapi.API_KEY"android:value="秘鑰"/><activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

?MainActivity.java:

package com.android.mybd;import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.RadioButton;import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView;public class MainActivity extends AppCompatActivity {private MapView myMap = null;private BaiduMap mBaiduMap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//在使用SDK各組件之前初始化context信息,傳入ApplicationContext SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);//獲取地圖控件引用myMap = (MapView) findViewById(R.id.bmapView);mBaiduMap=myMap.getMap();Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);}@Overrideprotected void onResume() {super.onResume();//在activity執(zhí)行onResume時執(zhí)行myMap.onResume(),實現(xiàn)地圖生命周期管理myMap.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity執(zhí)行onPause時執(zhí)行myMap.onPause(),實現(xiàn)地圖生命周期管理myMap.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity執(zhí)行onDestroy時執(zhí)行myMap.onDestroy(),實現(xiàn)地圖生命周期管理myMap.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}public void setMapMode(View view) {boolean checked = ((RadioButton) view).isChecked();switch (view.getId()) {case R.id.normal:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);}break;case R.id.statellite:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);}break;case R.id.blank:if (checked) {mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);}break;default:break;}}}

五、結(jié)果

1、主界面圖,默認(rèn)勾選普通圖:

2、衛(wèi)星圖展示:

3、空白地圖展示:?

總結(jié)

以上是生活随笔為你收集整理的Android实战开发--三种地图类型的设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。