Closed cammace closed 7 years ago
Hi guys, can someone help me to put a annotation like that car in my project?? idk how to do it.
this is the code im testing.
`/*
package com.raywenderlich.where2go
import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent import android.location.Location import android.os.Bundle import android.support.v4.content.ContextCompat import android.support.v7.app.AppCompatActivity import android.util.Log import android.widget.Toast import com.google.android.gms.common.api.ApiException import com.google.android.gms.common.api.ResolvableApiException import com.google.android.gms.location. import com.mapbox.android.core.location.LocationEngine import com.mapbox.android.core.location.LocationEngineListener import com.mapbox.android.core.location.LocationEnginePriority import com.mapbox.android.core.location.LocationEngineProvider import com.mapbox.android.core.permissions.PermissionsListener import com.mapbox.android.core.permissions.PermissionsManager import com.mapbox.api.directions.v5.models.DirectionsResponse import com.mapbox.api.directions.v5.models.DirectionsRoute import com.mapbox.geojson.Point import com.mapbox.mapboxsdk.Mapbox import com.mapbox.mapboxsdk.camera.CameraUpdateFactory import com.mapbox.mapboxsdk.geometry.LatLng import com.mapbox.mapboxsdk.location.LocationComponent import com.mapbox.mapboxsdk.location.LocationComponentOptions import com.mapbox.mapboxsdk.location.modes.CameraMode import com.mapbox.mapboxsdk.maps.MapboxMap import com.mapbox.mapboxsdk.maps.OnMapReadyCallback import com.mapbox.services.android.navigation.ui.v5.NavigationLauncher import com.mapbox.services.android.navigation.ui.v5.NavigationLauncherOptions import com.mapbox.services.android.navigation.ui.v5.route.NavigationMapRoute import com.mapbox.services.android.navigation.v5.navigation.NavigationRoute import kotlinx.android.synthetic.main.activity_main. import retrofit2.Call import retrofit2.Callback import retrofit2.Response
class MainActivity : AppCompatActivity(), PermissionsListener, LocationEngineListener, OnMapReadyCallback { //MapboxMap.OnMapClickListener
//1 val REQUEST_CHECK_SETTINGS = 1 var settingsClient: SettingsClient? = null
//2 lateinit var map: MapboxMap lateinit var permissionManager: PermissionsManager var originLocation: Location? = null
var locationEngine: LocationEngine? = null var locationComponent: LocationComponent? = null
var navigationMapRoute: NavigationMapRoute? = null var currentRoute: DirectionsRoute? = null
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Mapbox.getInstance(this, "key" ) setContentView(R.layout.activity_main) mapbox.onCreate(savedInstanceState) mapbox.getMapAsync(this) settingsClient = LocationServices.getSettingsClient(this) btnNavigate.hide()
btnNavigate.setOnClickListener {
val navigationLauncherOptions = NavigationLauncherOptions.builder() //1
.directionsRoute(currentRoute) //2
.shouldSimulateRoute(false) //3
.build()
NavigationLauncher.startNavigation(this, navigationLauncherOptions) //4
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CHECK_SETTINGS) {
if (resultCode == Activity.RESULT_OK) {
enableLocation()
} else
if (resultCode == Activity.RESULT_CANCELED) {
finish()
}
}
}
@SuppressWarnings("MissingPermission") override fun onStart() { super.onStart() if (PermissionsManager.areLocationPermissionsGranted(this)) { locationEngine?.requestLocationUpdates() locationComponent?.onStart() }
mapbox.onStart()
}
override fun onResume() { super.onResume() mapbox.onResume() }
override fun onPause() { super.onPause() mapbox.onPause() }
override fun onStop() { super.onStop() locationEngine?.removeLocationUpdates() locationComponent?.onStop() mapbox.onStop() }
override fun onDestroy() { super.onDestroy() locationEngine?.deactivate() mapbox.onDestroy() }
override fun onLowMemory() { super.onLowMemory() mapbox.onLowMemory() }
override fun onSaveInstanceState(outState: Bundle?) { super.onSaveInstanceState(outState) if (outState != null) { mapbox.onSaveInstanceState(outState) } }
override fun onExplanationNeeded(permissionsToExplain: MutableList
override fun onPermissionResult(granted: Boolean) { if (granted) { enableLocation() } else { Toast.makeText(this, "User location was not granted", Toast.LENGTH_LONG).show() finish() } }
override fun onLocationChanged(location: Location?) { location?.run { originLocation = this setCameraPosition(this) } }
override fun onConnected() { }
override fun onMapReady(mapboxMap: MapboxMap?) { //1 map = mapboxMap ?: return //2 val locationRequestBuilder = LocationSettingsRequest.Builder().addLocationRequest(LocationRequest() .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) ) //3 val locationRequest = locationRequestBuilder?.build()
settingsClient?.checkLocationSettings(locationRequest)?.run {
addOnSuccessListener {
enableLocation()
}
addOnFailureListener {
val statusCode = (it as ApiException).statusCode
if (statusCode == LocationSettingsStatusCodes.RESOLUTION_REQUIRED) {
val resolvableException = it as? ResolvableApiException
resolvableException?.startResolutionForResult(this@MainActivity, REQUEST_CHECK_SETTINGS)
}
}
}
}
//1 fun enableLocation() { if (PermissionsManager.areLocationPermissionsGranted(this)) { initializeLocationComponent() initializeLocationEngine() //map.addOnMapClickListener(this) } else { permissionManager = PermissionsManager(this) permissionManager.requestLocationPermissions(this) } }
//2 @SuppressWarnings("MissingPermission") fun initializeLocationEngine() { locationEngine = LocationEngineProvider(this).obtainBestLocationEngineAvailable() locationEngine?.priority = LocationEnginePriority.HIGH_ACCURACY locationEngine?.activate() locationEngine?.addLocationEngineListener(this)
val lastLocation = locationEngine?.lastLocation
if (lastLocation != null) {
originLocation = lastLocation
setCameraPosition(lastLocation)
} else {
locationEngine?.addLocationEngineListener(this)
}
}
@SuppressWarnings("MissingPermission") fun initializeLocationComponent() { locationComponent = map.locationComponent locationComponent?.activateLocationComponent(this)
locationComponent?.isLocationComponentEnabled = true
locationComponent?.cameraMode = CameraMode.TRACKING_COMPASS
}
//3 fun setCameraPosition(location: Location) { map.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location.latitude, location.longitude), 13.0)) }
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array
permissionManager.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
/*override fun onMapClick(point: LatLng) { if (!map.markers.isEmpty()) { map.clear() }
map.addMarker(MarkerOptions().setTitle("I'm a marker :]").setSnippet("This is a snippet about this marker that will show up here").position(point))
checkLocation()
originLocation?.run {
val startPoint = Point.fromLngLat(longitude, latitude)
val endPoint = Point.fromLngLat(point.longitude, point.latitude)
getRoute(startPoint, endPoint)
}
} */ @SuppressLint("MissingPermission") private fun checkLocation() { if (originLocation == null) { map.locationComponent.lastKnownLocation?.run { originLocation = this } } }
private fun getRoute(originPoint: Point, endPoint: Point) {
NavigationRoute.builder(this) //1
.accessToken(Mapbox.getAccessToken()!!) //2
.origin(originPoint) //3
.destination(endPoint) //4
.build() //5
.getRoute(object : Callback
override fun onResponse(call: Call<DirectionsResponse>,
response: Response<DirectionsResponse>) {
if (navigationMapRoute != null) {
navigationMapRoute?.updateRouteVisibilityTo(false)
} else {
navigationMapRoute = NavigationMapRoute(null, mapbox, map)
}
currentRoute = response.body()?.routes()?.first()
if (currentRoute != null) {
navigationMapRoute?.addRoute(currentRoute)
}
btnNavigate.isEnabled = true
}
})
} }
`
When setting a location layer foreground or bearing drawable in xml, the icon gets fully tinted before displaying to the user.
@tobrun @Guardiola31337