MainActivity
public class MainActivity extends MapActivity {
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// gps사용여부 검사
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
// 사용시 mapview를 띄워준다.
setContentView(R.layout.mapview_main);
GPSListener gpsListener = new GPSListener();
long minTime = 5000;
float minDistance = 0;
// 현재 위치 호출
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, gpsListener);
}else{
Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
}
}
private class GPSListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
sermarker(location);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
public void sermarker(Location location){
MapView mapView;
Drawable marker;
MyLocationOverlay me = null;
//위도값
double latitude = location.getLatitude();
// 경도값
double longitude = location.getLongitude();
mapView = (MapView) findViewById(R.id.mapView);
marker = getResources().getDrawable(R.drawable.ic_launcher);
mapView.getController().setCenter(new GeoPoint((int)(latitude*1E6), (int)(longitude*1E6) ));
me = new MyLocationOverlay(this, mapView); // 현제클래스에 레이아웃을 추가
mapView.setBuiltInZoomControls(true); // Zoom기능
mapView.setSatellite(false); // 위성지도 사용여부
mapView.getController().setZoom(16);
mapView.getOverlays().add(new MyOverlay(marker, latitude, longitude)); // 마커 그려줄 클래스로 넘긴다.
mapView.getOverlays().add(me);
}
}
Myoverlay.java
public class MyOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items = new ArrayList<OverlayItem>();
private Drawable marker = null;
public MyOverlay(Drawable marker, double lat, double lng) {
super(marker);
// TODO Auto-generated constructor stub
this.marker = marker;
items.add(new OverlayItem(new GeoPoint((int)(lat*1E6), (int)(lng*1E6)),
null,null ));
populate(); // 요거 실행함으로써 item 이 생성되는 듯 하다.
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return items.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// TODO Auto-generated method stub
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);
}
}
안드로이드 입문 1주일정도 됬습니다....
현재 위치를 gps로 받아와서.. 한번은 찍어주는데..
다시 에뮬로 gps를 전송 받으면 그전 마커가 안지워집니다... 도데체..어떻게 해야되죠..
remove clear.. 다써봤어요.. 제발 도움좀 주세요..ㅜ.ㅜ 상세히!! ㅠㅠㅠㅠ
다써봣는데 아웃오브인덱스.. 자꾸 나오구요.. 도와주십숑!