0

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

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

我按照有关如何操作的文档进行操作,操作非常简单,但它不起作用。我还检查了下面的答案,但这只是文档的副本。

在 TomTom Android SDK 中返回的位置为空

4

1 回答 1

1

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

为了确保您尽快获得用户位置,您可以覆盖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);
}
}
于 2019-11-28T18:23:16.350 回答