안드로이드 개발 질문/답변
(글 수 45,052)
public class LocationMap extends MapActivity {
LocationListener mLocationListener;
MapView mapView;
MapController mc;
List<Overlay> overlay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
mapView.setSatellite(false);
mapView.setStreetView(true);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = lm.getBestProvider(criteria, true);
mc = mapView.getController();
mLocationListener = new LocationListener() {
public void onLocationChanged(Location location) {
overlay.removeAll(overlay);
if (location != null) {
//Toast.makeText(getBaseContext(), "위도는 " + location.getLatitude() + ", " + "경도는 " + location.getLongitude() + " 입니다.", Toast.LENGTH_LONG).show();
GeoPoint gp = new GeoPoint((int) (location.getLatitude() * 1000000),(int) (location.getLongitude() * 1000000));
mc.animateTo(gp);
mc.setZoom(16);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.state_icon);
bitmap = Bitmap.createScaledBitmap(bitmap, 50, 50, false);
Drawable drawable = new BitmapDrawable(bitmap);
MyIconItemizedOverlay mdio = new MyIconItemizedOverlay(drawable);
OverlayItem overlayitem = new OverlayItem(gp, "", "");
mdio.addOverlayItem(overlayitem);
overlay = mapView.getOverlays();
overlay.add(mdio);
}
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
};
lm.requestLocationUpdates(provider, 1000, 0, mLocationListener);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
public void onDestroy() {
super.onDestroy();
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.removeUpdates(mLocationListener);
}
}
mapview를 사용해 현재위치를 표시해주는 건데요.
위치가 변할때마다 마커가 찍혀서 마커가 여러개가 표시되는 문제를 해결하기위해서 overlay.removeAll(overlay); 를 넣어줘서 기존에 있던 기록을 없애게 해줬는데요.
overlay.removeAll(overlay); 이부분을 넣기전에는 잘되는데 추가한후에 멈춰버리네요. NullPointerException이라고 logcat에 뜨네요...
현재위치 표시해줄때 위치가 변할때마다 전에 찍혔던 마커는 없어지고 새로운 마커가 업데이트되게하려면 어떻게 해야하나요....
도와주세요~




어디서 null이 나는데요....???