TomtomMap.getUserLocation() всегда возвращает значение null?
Я пытаюсь узнать местоположение устройств, но TomtomMap.getUsersLocation() всегда возвращает значение null.
Связано это с тем, что, поскольку я установил TomtomMap.setMyLocationEnabled(true), карта правильно отмечает местоположение пользователя, но когда я пытаюсь получить его для себя, он возвращает null.
Я следил за документацией, как это сделать, это было очень просто, это просто не работает. Я также проверил ответ ниже, но это всего лишь копия документации.
Возвращенное местоположение в TomTom Android SDK не указано.
1 ответ
Трудно догадаться, не глядя на код, но, скорее всего, вы пытаетесь определить местоположение пользователя слишком рано, когда положение GPS еще не доступно (возможно, внутри onMapReady
перезвонить).
Чтобы убедиться, что вы получаете местоположение пользователя как можно быстрее, вы можете переопределить onLocationChanged
перезвонить.
Ниже приведен пример кода активности:
public class MainActivity extends AppCompatActivity implements LocationUpdateListener, OnMapReadyCallback {
private TomtomMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Register onMapReady callback
MapFragment mapFragment = (MapFragment) getSupportFragmentManager().findFragmentById(R.id.map_fragment);
mapFragment.getAsyncMap(this);
}
@Override
public void onMapReady(@NonNull TomtomMap tomtomMap) {
this.map = tomtomMap;
// Enable location and register location listener callback
this.map.setMyLocationEnabled(true);
this.map.addLocationUpdateListener(this);
}
// Forward permissions callbacks
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
this.map.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
public void onLocationChanged(Location location) {
// Use map.getUserLocation() without getting NULL
Toast.makeText(this, this.map.getUserLocation().toString(), Toast.LENGTH_SHORT).show();
// Remove location listener if needed
this.map.removeLocationUpdateListener(this);
}
}