看到标题有个(二)该不会又是很长的系列文了吧!?
并不会。
因为有点复杂。微懒。
昨天做完那些步骤之後,Android Studio 里面预先帮你标注了澳洲雪梨的位子,你可以在 MapsActivity.kt 里面删除这个 marker 或是先保留,等之後再来放上你要标注的地点。
在做这些之前,先来抓取实际上你所在的位子。Google maps 内建了目前位置的按钮 (直接加在昨天开好的专案里面就好了):
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.isMyLocationEnabled = true
}
正常来说新增了 isMyLocationEnabled 这行程序会被标记错误,你可以滑鼠可以直接移到错误的地方,点选 Add permission Check:
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return
}
在 TODO 的那行会要你要求写程序去要求权限,照着他的说明就会是这样:
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
//要求有精确定位的权限,因精确定位里包含了粗绿定位
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 0)
return
}else
mMap.isMyLocationEnabled = true
}
因为这个功能还要搭配一些权限,接下来在 AndroidManifest.xml 里增添一些权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapstest">
<!--允许使用网路-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--粗略权限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--精确定位权限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
其实里面已经帮你加好了精确定位,在这边补上允许粗略定位的权限。
以上都设定完成的话,在实机上的画面会是这样:
点击右上角的图示,就会移到目前的所在位置啦。
在上面进行设定的时候,应该会发现 onMapReady 这个 fun 里面有已经设定好的雪梨标记点,其实只要程序後面的资讯,就可以改标记另一个地方:
val marker = MarkerOptions() //宣告一个 marker 变数
marker.position(LatLng(24.078311918785868, 120.71365502668787)) //放入要标记的点
marker.title("旦式设计") // marker 名称
marker.draggable(false) // marker 是否可以拖移
mMap.addMarker(marker) //在地图加上 marker 这个标记点
运行之後点选标记点,标记名称就会显示在上方:
Google Maps 的简单介绍就到这边啦。
下一篇见写写打家打家摆掰。
>>: DAY 29 Big Data 5Vs – Value(价值) - AWS SageMaker & ML Family
接下来要使用 ProtoPie Player 来进行分享。 如果 client 端手机或平板已经下载...
目标 今天要来做的是倒数计时器 Step1 let countdown; function time...
前一篇介绍了如何运用 Laravel 框架设计模式规划大型专案,当中有提到Model,今天就来介绍这...
今天要来谈谈如何查看 Angular 应用程序的版本及更新。 首先,我们要先知道目前本机端的 Ang...
阵列点灯 ( 显示图形 ) 教学原文参考:阵列点灯 ( 显示图形 ) 这篇文章会介绍如何使用「阵列」...