Closed salihyalcin closed 5 years ago
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion 28 defaultConfig { applicationId "com.gislog.oss" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions{ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.arch.core:core-testing:2.0.1' implementation 'android.arch.lifecycle:extensions:1.1.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.squareup.retrofit2:retrofit:2.6.0' implementation 'com.squareup.retrofit2:converter-gson:2.6.0' implementation 'com.google.android.gms:play-services-location:17.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'com.esri.arcgisruntime:arcgis-android:100.5.0' implementation 'org.permissionsdispatcher:permissionsdispatcher-processor:4.5.0' kapt 'org.permissionsdispatcher:permissionsdispatcher-processor:4.5.0' testİmplementation 'junit:junit:4.12' androidTestİmplementation 'androidx.test:runner:1.2.0' androidTestİmplementation 'androidx.test.espresso:espresso-core:3.2.0' testİmplementation "org.mockito:mockito-core:2.19.0" testİmplementation 'org.mockito:mockito-inline:2.13.0' testİmplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" testİmplementation "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion" testİmplementation "org.powermock:powermock-module-junit4:$rootProject.ext.powerMockito" testİmplementation "org.powermock:powermock-api-mockito:$rootProject.ext.powerMockito" }
@RuntimePermissions class MapFragment : Fragment() { private var baseMapControl = false private lateinit var trafficLayerUrl: String private lateinit var locationFragment: LocationFragment companion object { @JvmStatic fun newInstance() = MapFragment().apply { } } private lateinit var mapViewModel: MapViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_map, container, false) trafficLayerUrl = getString(R.string.map_traffic_url) mapViewModel = ViewModelProviders.of(this).get(MapViewModel::class.java) mapViewModel.configureMapView(context!!, view.mainMapView) baseMapControl = mapViewModel.setUpBaseMap(view.mainMapView, Utils.mapURL) mapViewModel.trafficDensityResponse.observe(this, Observer { response -> view.mainShowTraffic.setImageDrawable( ContextCompat.getDrawable( context!!, TrafficCongestion.getIcon(response.trafficDensity.toInt()) ) ) }) view.mainChangeBaseMap.setOnClickListener { baseMapControl = if (baseMapControl) { mapViewModel.setUpBaseMap(view.mainMapView, Utils.vectorMapURL) } else { mapViewModel.setUpBaseMap(view.mainMapView, Utils.mapURL) } } view.mainShowTraffic.setOnClickListener { mapViewModel.setUpTrafficView(view.mainMapView, trafficLayerUrl) } view.mainShowLocation.setOnClickListener { showUserLocationWithPermissionCheck(view.mainMapView) } return view } override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) onRequestPermissionsResult(requestCode, grantResults) } @NeedsPermission(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION) fun showUserLocation(mapView: MapView) { try { locationFragment = LocationFragment.newInstance() fragmentManager?.beginTransaction() ?.add(R.id.main_container, locationFragment) ?.commit() val locationDisplay = mapView.locationDisplay locationDisplay.addDataSourceStatusChangedListener(LocationDisplay.DataSourceStatusChangedListener { dataSourceStatusChangedEvent -> if (dataSourceStatusChangedEvent.isStarted) return@DataSourceStatusChangedListener if (dataSourceStatusChangedEvent.error == null) return@DataSourceStatusChangedListener }) if (!locationDisplay.isStarted) locationDisplay.autoPanMode = LocationDisplay.AutoPanMode.OFF locationDisplay.startAsync() if (locationDisplay.location != null) { mapView.setViewpointCenterAsync(locationDisplay.location.position, 5000.0) } } catch (ex: Exception) { ex.printStackTrace() } } }
Check below.
- implementation 'org.permissionsdispatcher:permissionsdispatcher-processor:4.5.0' + implementation 'org.permissionsdispatcher:permissionsdispatcher:4.5.0'
Overview
build.gradle
MapFragment Calss
Environment