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);
}
}
Другие вопросы по тегам