یوزرها اکثر وقت ها از Google Maps برای دیدن جای فعلی خویش به کارگیری می نمایند. برای اکران جای دستگاه روی نقشه خویش ، طراحی اپلیکیشن میتوانید از لایه داده حالت (location-data layer) استعمال فرمائید.
لایه داده حالت مکانی ، علامت شرایط مکانی را به نقشه اضافه می نماید. مخاطب برای دیدن این لایه روی دکمه ای به صورت تصویر تحت ضربه میزند:
هنگامی استفاده کننده روی این دکمه ضربه میزند ، رایاپارس نقشه جای دستگاه را در راءس قرار میدهد. در صورتیکه دستگاه اثبات باشد، جای به طور یک نقطه آبی رنگ و در حالتیکه دستگاه در جنبش باشد جای به طور یک بالن آبیرنگ نشان داده میشود.
درین کار ، شما لایه داده - جای (location-data layer) را فعال میکنید.
فرآیند درخواست مجوزهای جای
فعال کردن ردیابی جای در نقشه های گوگل (Google Maps) تنها به یک خط کد نیاز داراست. با این هم اکنون آغاز بایستی مطمئن گردید که استفاده کننده مجوزهای حالت مکانی را (با استعمال از سبک اذن مجال ایفا یا این که runtime-permission) داده باشد.
درین مرحله ، شما مجوزهای حالت مکانی را درخواست و ردیابی جای را فعال میکنید.
در فولدر AndroidManifest.xml ، پژوهش نمائید که تایید صلاحیت FINE_LOCATION از گذشته جانور باشد. Android Studio هنگام گزینش الگوی نقشه های گوگل این تایید صلاحیت را بایستی وارد کردهباشد در شرایطی که اینطور نباشد آن را خودتان وارد نمائید:
2. در MapsActivity ، یک متغیر کلاسی به اسم REQUEST_LOCATION_PERMISSION ساخت و ساز نمائید.
private val REQUEST_LOCATION_PERMISSION = 1
3. برای نظارت اعطای مجوزها ، در MapsActivity متدی به اسم isPermissionGranted تولید نمایید. درین اسلوب تحقیق نمایید که مخاطب اذن داده باشد.
private fun isPermissionGranted() : Boolean {
return ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
}
4. برای فعال کردن ردیابی حالت مکانی در اپ خویش ، در MapsActivity متدی به اسم enableMyLocation ساختوساز نمایید که هیچ آرگمانی نمی گیرد و هیچ چیزی را بر نمی گرداند. درین اسلوب، تایید صلاحیت ACCESS_FINE_LOCATION را نظارت نمایید. در شرایطی که که جواز داده گردیده ، لایه شرایط را فعال فرمایید. در غیر این شکل ، اذن را درخواست فرمایید.
private fun enableMyLocation() {
if (isPermissionGranted()) {
map.isMyLocationEnabled = true
}
else {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
REQUEST_LOCATION_PERMISSION
)
}
}
5. برای فعال کردن لایه حالت درون اسلوب onMapReady اسلوب enableMyLocation را فراخوانی نمایید.
override fun onMapReady(googleMap: GoogleMap) {
...
enableMyLocation()
}
6. سیاق OnRequestPermissionsResult را override نمایید. درین روال رسیدگی نمایید که کد درخواست requestCode موازی REQUEST_LOCATION_PERMISSION باشد. در صورتیکه اینطور باشد ، این بدان مفهوم میباشد که جواز داده شدهاست. در شکل اعطای تایید صلاحیت ، نظارت نمائید که آیا آرایه grantResults در اولی جای خویش دارنده PackageManager.PERMISSION_GRANTED باشد. در شرایطیکه اینطور باشد اسلوب enableMyLocation را فراخوانی فرمایید.
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array,
grantResults: IntArray) {
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.contains(PackageManager.PERMISSION_GRANTED)) {
enableMyLocation()
}
}
}
7. اپلیکیشن خویش را اعمال نمایید. بایستی فریم خودمانی برای درخواست دسترسی به جای دستگاه اکران داده گردد. جواز را به نرمافزار بدهید.