gpt4 book ai didi

java - GeoPoint 中的空指针异常

转载 作者:行者123 更新时间:2023-12-01 15:05:56 24 4
gpt4 key购买 nike

下面的代码有什么问题。它在此行抛出空指针异常(location.setLatitude(latitude);)。我试图在应用程序启动后立即画一个圆圈,这就是我从 onCreate 方法传递位置对象的原因。

private Location location;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationListener = new GPSLocationListener();

locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
locationListener);
mapView = (MapView) findViewById(R.id.mapView);
listView = (ListView) findViewById(R.id.mylist);
mapView.setStreetView(true);
mapView.setBuiltInZoomControls(true);

mapController = mapView.getController();
mapController.setZoom(15);

GeoPoint initialPoint = new GeoPoint( (int) (36.778261* 1E6), (int) (-119.417932 * 1E6));
double latitude = initialPoint .getLatitudeE6() / 1E6;
double longitude = initialPoint .getLongitudeE6() / 1E6;

location.setLatitude(latitude);
location.setLongitude(longitude);
locationListener.onLocationChanged(location);
}

下面是负责 LocationUpdate 的类。

private class GPSLocationListener implements LocationListener {

MapOverlay mapOverlay;

public GPSLocationListener(MapView mapView) {

}

@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));

mapController.animateTo(point);
mapController.setZoom(15);

if (mapOverlay == null) {
mapOverlay = new MapOverlay(this,android.R.drawable.star_on);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.add(mapOverlay);
}
mapOverlay.setPointToDraw(point);
mapView.invalidate();
}
}

@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}

任何建议都会有很大帮助。

更新:-

进行更改后,我得到

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

下面是我进行更改的代码。

GeoPoint initialPoint = new GeoPoint( (int) (36.778261), (int) (-119.417932));
double latitude = initialPoint .getLatitudeE6() / 1E6;
double longitude = initialPoint .getLongitudeE6() / 1E6;

this.location = new Location("TechGeeky Randomly Initialized");
location.setLatitude(latitude);
location.setLongitude(longitude);
locationListener.onLocationChanged(location);

我在这里做错了什么吗?

最佳答案

我认为您想要执行的操作不是从 LocationManager 获取最后一个已知位置。而是从您在 onCreate() 中定义的位置(例如随机位置)开始。要实现此目的,只需创建一个新的 Location像这样的对象:

this.location = new Location("TechGeeky Randomly Initialized");

在这些行之前执行此实例化以避免异常:

location.setLatitude(latitude);
location.setLongitude(longitude);
locationListener.onLocationChanged(location);

关于java - GeoPoint 中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com