TomtomMap.getUserLocation() returns 始终为空?

TomtomMap.getUserLocation() returns always null?

我试图获取设备位置,但 TomtomMap.getUsersLocation() 始终返回 null。

有线的事情是,因为我设置了 TomtomMap.setMyLocationEnabled(true),地图正确标记了用户位置,但是当我尝试为自己获取它时,它 returns null。

我遵循了有关操作方法的文档,遵循起来非常简单,但就是行不通。 我也检查了下面的答案,但它只是文档的副本。

如果不看代码很难猜测,但很可能您正试图在 GPS 位置尚不可用时过早获取用户位置(可能在 onMapReady 回调中)。

为确保您尽快获得用户位置,您可以覆盖 onLocationChanged 回调。

请在下面找到示例 activity 代码:

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);
}
}