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);
}
}
我试图获取设备位置,但 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);
}
}