Day 27:Google Map 范本学习(2)

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 UdemyYoutube 频道。另外,想追踪更多相关技术资讯,欢迎到 脸书粉丝专页 按赞追踪喔~

今天我们来看看,在昨天 Google Map 范本范例当中,被加入了哪些程序,即可以快速完成地图标示的 APP。到时我们口罩地图专案,要加入 Google Map 地图应用,如法炮制即可。

申请金钥

昨天我们是透过范本的范例连结过来设定申请金钥,今天我们自己前往 Google API Console,登入 Google 帐号,选择新建专案或选旧有专案 → 凭证 → API 。即可以产生新的 key。

设定金钥

产生新的金钥後,可以点击金钥名,即可以进入该笔金钥进行设定,可以更改金钥名称、绑定APP套件名称与 SHA1 凭证指纹,防止别人冒用。

取得 SHA1 凭证指纹

快速取得 SHA1 凭证指纹方法,可以点击 Android Studio 右侧的 Gradle 视窗,展开後可以找到 app -> Tasks -> android -> signingReport,直接执行此脚本,即可以取得本机正式、测试 keystore 等相关凭证指纹。

输出结果

添加 map 依赖库 (dependencies)

implementation 'com.google.android.gms:play-services-maps:17.0.0'

加入金钥

在 AndroidManifest.xml ,加入在 Google API Console 申请到的金钥。 需加入在 里面子项目中。

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_maps_key" />

画面布局

在 activity_maps.xml 加入 fragment 标签,最关键是 android:name 需要设定为:「com.google.android.gms.maps.SupportMapFragment」

 <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MapsActivity" />

MapsActivity

onCreate 起来获取 map 的 View 为 mapFragment,然後呼叫 getMapAsync 初始化地图。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_maps)

    val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
    mapFragment.getMapAsync(this)
}

MapsActivity 实作 OnMapReadyCallback ,当 Map 准备好,则会回呼(CallBack) onMapReady,我们在里面透过地图提供的 addMarker 方法,加入一个雪梨的图钉座标。并透过 moveCamera 方法,将手机地图画面移动到此处。

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

...
...
...

override fun onMapReady(googleMap: GoogleMap) {
    mMap = googleMap

    // Add a marker in Sydney and move the camera
    val sydney = LatLng(-34.0, 151.0)
    mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
 }
}

输出结果

参考资料

HKT 线上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/

地图物件
https://developers.google.com/maps/documentation/android-sdk/map?hl=zh-tw


那今天【iThome 铁人赛】就介绍到这边罗~

顺带一提,KT 线上教室,脸书粉丝团,会不定期发布相关资讯,不想错过最新资讯,不要忘记来按赞,追踪喔!也欢迎大家将这篇文章分享给更多人喔。

我们明天再见罗!!!掰掰~


<<:  Day 27 - 成本估计与 Amazon DynamoDB

>>:  [Day-27] R语言 - 分群应用(五) 分群预测 - 建模与诊断 ( Modeling and Diagnosis in R.Studio )

Swift纯Code之旅 Day17. 「复习 - 新增页面、TableView、TableViewCell」

前言 目前标签页面的画面及功能已经完成,接下来继续新增「重复」页面,算是再熟悉一下TableView...

Day 27. B2E-密码加密

还记得第2天在做专案规划时,有提到一个目标「加密敏感资料实现资安管理」吗? 目前我们的密码还是一样...

系统弱点扫描工具-Tenable Nessus(中)

昨天我们安装了Tenable Nessus 今天要来使用 首先打开我们的浏览器登入 https://...

Day11 为什麽电脑能自动完成指令 - Lua 的多值回传

从前几回的研究中,我已经学会 Lua 的函数宣告,也只是一个 function 变数,以及相关的语法...

【Day32】[演算法]-内插搜寻法Interpolation Search

内插搜寻法(Interpolation Search  ),又称插补搜寻法,是二分搜寻法的改良版,二...