@@ -5,14 +5,13 @@ import android.content.Intent
55import android.content.pm.PackageManager
66import android.graphics.Color
77import android.os.Bundle
8- import android.util.Log
98import android.view.LayoutInflater
109import android.view.View
1110import android.view.ViewGroup
11+ import android.widget.Toast
1212import androidx.core.app.ActivityCompat
1313import androidx.fragment.app.Fragment
1414import com.google.android.gms.maps.*
15- import androidx.core.app.ActivityCompat.requestPermissions
1615import androidx.lifecycle.ViewModelProviders
1716import androidx.lifecycle.Observer
1817import com.google.android.gms.maps.model.*
@@ -23,6 +22,10 @@ import net.lmlab.m_tsunami_android.ui.WebViewActivity
2322
2423class MapFragment : Fragment (), OnMapReadyCallback {
2524
25+ companion object {
26+ val REQUEST_LOCATION = 10
27+ }
28+
2629 private lateinit var viewModel: MapViewModel
2730
2831 private var routePostions = ArrayList <LatLng >()
@@ -104,11 +107,17 @@ class MapFragment : Fragment(), OnMapReadyCallback {
104107 mapView.onLowMemory()
105108 }
106109
107- // todo: なぜか呼ばれない
108110 // 許可を求めるダイアログで何らかのボタンが押されたときに発生するイベント
109111 override fun onRequestPermissionsResult (requestCode : Int , permissions : Array <String >, grantResults : IntArray ) {
110112 super .onRequestPermissionsResult(requestCode, permissions, grantResults)
111- Log .d(" m_tsunami_android" , " onRequestPermissionsResult" )
113+ if (requestCode != REQUEST_LOCATION ) { return }
114+
115+ if (grantResults[0 ] != PackageManager .PERMISSION_GRANTED ) {
116+ Toast .makeText(context, R .string.location_permission_denied, Toast .LENGTH_LONG ).show()
117+ return
118+ }
119+
120+ loadData()
112121 }
113122
114123 private fun observe () {
@@ -132,7 +141,6 @@ class MapFragment : Fragment(), OnMapReadyCallback {
132141 .position(latLng)
133142 .title(it.name)
134143 .snippet(" 標高" + it.altitude.toString() + " m " + it.structure + " " + it.floor + " 階" )
135- // .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
136144 .icon(icon)
137145 )
138146 }
@@ -173,18 +181,22 @@ class MapFragment : Fragment(), OnMapReadyCallback {
173181
174182 private fun checkPermission () {
175183 if (ActivityCompat .checkSelfPermission(requireContext(), Manifest .permission.ACCESS_FINE_LOCATION ) != PackageManager .PERMISSION_GRANTED ) {
176- requestPermissions(requireActivity(), arrayOf(Manifest .permission.ACCESS_FINE_LOCATION ), 10 ) // REQUEST_LOCATION
184+ requestPermissions(arrayOf(Manifest .permission.ACCESS_FINE_LOCATION ), REQUEST_LOCATION )
177185 } else {
178- // 許可済でないとクラッシュする
179- googleMap.isMyLocationEnabled = true
180-
181- viewModel.getLastLocation()
182- viewModel.loadBuildings()
183- viewModel.loadToilets()
184- viewModel.loadWebcams()
186+ loadData()
185187 }
186188 }
187189
190+ private fun loadData () {
191+ // 許可済でないとクラッシュする
192+ googleMap.isMyLocationEnabled = true
193+
194+ viewModel.getLastLocation()
195+ viewModel.loadBuildings()
196+ viewModel.loadToilets()
197+ viewModel.loadWebcams()
198+ }
199+
188200 private fun setMarkersAndRoute (route : Route ) {
189201 val startLatLng = LatLng (route.startLat!! , route.startLng!! )
190202 val endLatLng = LatLng (route.endLat!! , route.endLng!! )
0 commit comments