....
ViewPoint vp = new ViewPoint();
List<Overlay> overlays = mMap.getOverlays();
overlays.add(vp);
...
//////////////////
//OnCreate()외부
...
class ViewPoint extends Overlay {
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
}
public boolean onTap(GeoPoint p, MapView mapView) {
String msg;
msg = "x = " + p.getLatitudeE6() + ", y = " + p.getLongitudeE6();
Toast.makeText(select_point.this, msg, Toast.LENGTH_SHORT).show();
mapControl.animateTo(p); //선택한 좌표로 맵 중앙 이동
return true;
}
}
/////////////////////
현재 소스는 위와 같습니다. 위 소스는... 그냥 맵에서 특정 위치를 터치했을때 그 위치로 이동하고 토스트창으로 좌표를 띄어줍니다.
그런데 여기에 이동한 좌표위에 플래그(이미지)를 박고 싶습니다. 매번 다른 좌표로 이동할떄마다 플래그가 바뀌는 방식으로요...
아주 간단하게 몇부분만 추가하면 될듯한데... 책에도 안나오고 검색어도 뭐라고 해야할지 모르겠네요 ㅜㅜ
도움 부탁드립니다ㅜㅜ
mapView.getOverlays().remove(0); //오버레이가 하나 찍혀있을시에...0으로 호출
mapController.animateTo(centerGeoPoint); // 센터 이동
//원하는 이미지를 drawable.red_pin 처럼 넣어주시구 오버레이 추가...
Drawable marker = getResources().getDrawable(R.drawable.red_pin);
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
mapView.getOverlays().add(new LocationItemizedOverlay(marker));
위와 같이 onTap에 넣으시면....클릭 될 때마다 오버레이 삭제하고 중심점을 클릭된 곳으로 옮기고
클릭된 곳에 오버레이가 다시 그려집니다....토스트는 띄우시면 되구요...
저번에 질문 하셨을때 답변 해드렸는데 ㅠ_ㅠ 충부한 답변이 안 됐나보군요...
ㅜㅜ 죄송합니다.
package android.aj.gps;
import java.util.List;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
public class select_point extends MapActivity{
MapView mMap;
MapController mapControl;
// 현재 폰의 위치 표시 위함
MyLocationOverlay mLocation;
// 위치정보 provider 결정 : gps 또는 network(for test)
String provider;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selectpoint);
Map_init();
}
//터치했을때 특정 포인트의 좌표 확인
class MyItemizedOverlay extends ItemizedOverlay<OverlayItem>{
public MyItemizedOverlay(Drawable defaultMarker) {
super(defaultMarker);
// TODO Auto-generated constructor stub
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 1;
}
public boolean onTap(GeoPoint p, MapView mapView) {
String msg;
msg = "x = " + p.getLatitudeE6() + ", y = " + p.getLongitudeE6();
Toast.makeText(select_point.this, msg, Toast.LENGTH_SHORT).show();
mapControl.animateTo(p); //선택한 좌표로 맵 중앙 이동
return true;
}
}
// class ViewPoint extends Overlay {
// public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// super.draw(canvas, mapView, shadow);
// }
// public boolean onTap(GeoPoint p, MapView mapView) {
//
// String msg;
// msg = "x = " + p.getLatitudeE6() + ", y = " + p.getLongitudeE6();
// Toast.makeText(select_point.this, msg, Toast.LENGTH_SHORT).show();
// mapControl.animateTo(p); //선택한 좌표로 맵 중앙 이동
//
// return true;
// }
// }
///////////////////////////////////////////////////////////////////////////////////////////
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private void Map_init() {
// TODO Auto-generated method stub
mMap = (MapView)findViewById(R.id.mapview);
mapControl = mMap.getController();
mapControl.setZoom(18);
mMap.setBuiltInZoomControls(true);
// 초기값 설정
GeoPoint pt = new GeoPoint(35235042, 129082252);
mapControl.setCenter(pt);
//텍스트 출력
TextView title = new TextView(this);
title.setText("자동으로 찾아갈 목적지를 선택하세요.");
title.setTextSize(20);
title.setTextColor(Color.BLACK);
MapView.LayoutParams lp = new MapView.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
15,10, MapView.LayoutParams.LEFT | MapView.LayoutParams.TOP);
mMap.addView(title, lp);
//목적지 찾는 부분
Drawable marker = getResources().getDrawable(R.drawable.flag);
List<Overlay> overlay = mMap.getOverlays();
MyItemizedOverlay markers = new MyItemizedOverlay(marker);
// ViewPoint vp = new ViewPoint();
// List<Overlay> overlays = mMap.getOverlays();
// overlays.add(vp);
}
}
뭐가 문제일까요? ㅜㅜ



