Я разрабатываю приложение Android, в котором отображается карта, а местоположение устройства отслеживается в точке на карте. Я использую Azure Maps SDK для самой карты и FusedLocationProviderClient (Play Services) для получения GPS-координат. Теперь я делаю это, записывая свои координаты в переменные с помощью FusedLocationProviderClient и снова читая их при создании карты в Azure. Проблема этого подхода заключается в том, что он покажет мое местоположение только на момент создания приложения, но не изменит его динамически при перемещении. То, что я хочу, это способ изменить карту после создания. Как это сделать?
Для некоторого контекста это код, который я использую для получения координат (Kotlin:)
var location = fusedLocationClient.lastLocation.result
var currentLong : Double = location?.longitude?:0.0
var currentLat : Double = location?.latitude?:0.0
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
locationResult ?: return
for (location in locationResult.locations) {
currentLat = location.latitude
currentLong = location.longitude
// This is just so I make sure that the values actually change
latitudeView.text = currentLat.toString()
longitudeView.text = currentLong.toString()
task = client.checkLocationSettings(builder.build())
}
}
}
fusedLocationClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.getMainLooper()
)
И это код для написания точка на карте
mapControl.onReady {map : AzureMap ->
//Create a data source and add it to the map.
val dataSource =
DataSource()
map.sources.add(dataSource)
//Create a list of points.
dataSource.add(Feature.fromGeometry(Point.fromLngLat(currentLong, currentLat)))
//Create a LineString feature and add it to the data source.
//Create a line layer and add it to the map.
map.layers.add(SymbolLayer(dataSource))
}
Я новичок в этой области, и документация не помогает, поэтому вся помощь приветствуется.