0
사용자가지도를 클릭하면지도에 마커를 추가하려고합니다.
onTouchEvent 내에서 탭 마커를 추가하면 해당 마커 탭이있는 위치에서 (제목과 스 니펫의 값은 하드 코딩 됨).
그러나 문제는 사용자의 제목과 스 니펫 값을 가져 오려면 세부 정보를 입력하라는 사용자 지정 프롬프트 대화 상자를 만들었습니다.
버튼의 onclick 이벤트 핸들러 내에 addOverlay()를 삽입하면 해당 마커가 표시되지 않습니다. AVD클릭 상자에 대화 상자를 추가 할 때 마커가 표시되지 않음
*는
다음 코드는
public class MarkerOverlay extends ItemizedOverlay { private ArrayList<OverlayItem> locationOverlayItems = new ArrayList<OverlayItem>(); private Context locationContext; private OverlayItem tabbedLocation; private AlertDialog promptDialog; private LayoutInflater inflater; private TextView info; private EditText title; private EditText description; public MarkerOverlay(Drawable defaultMarker, Context context) { super(boundCenterBottom(defaultMarker)); locationContext = context; } public void addOverlay(OverlayItem overlay) { locationOverlayItems.add(overlay); populate(); } public void removeOverLay(OverlayItem overlay){ locationOverlayItems.remove(overlay); populate(); } @Override protected OverlayItem createItem(int arg0) { return locationOverlayItems.get(arg0); } @Override public int size() { return locationOverlayItems.size(); } public boolean onTouchEvent(MotionEvent event, MapView mapView) { if (event.getAction() == 1) { int x = (int) event.getX(); int y = (int) event.getY(); final GeoPoint geoPoint = mapView.getProjection().fromPixels(x, y); tabbedLocation = new OverlayItem(geoPoint, "title","description"); addOverlay(tabbedLocation); return false; } } }
이
이 예상 된 결과를 제공하지 않습니다 잘 작동public boolean onTouchEvent(MotionEvent event, MapView mapView) {
if (event.getAction() == 1) {
int x = (int) event.getX();
int y = (int) event.getY();
final GeoPoint geoPoint = mapView.getProjection().fromPixels(x, y);
inflater = LayoutInflater.from(locationContext);
View prompt = inflater.inflate(R.layout.marker_prompt, null);
info = (TextView) prompt.findViewById(R.id.info);
info.setText(geoPoint.getLatitudeE6()/1E6 + "," + geoPoint.getLongitudeE6()/1E6);
title = (EditText) prompt.findViewById(R.id.title_text);
description = (EditText) prompt.findViewById(R.id.description_text);
promptDialog = new AlertDialog.Builder(locationContext)
.setView(prompt)
.setTitle("Add marker")
.setMessage("Specify the details")
.setPositiveButton("Add", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(!title.getText().toString().equals("") && !description.getText().toString().equals("")){
tabbedLocation = new OverlayItem(geoPoint, title.getText().toString(),
description.getText().toString());
addOverlay(tabbedLocation);
}
}
})
.setNegativeButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
promptDialog.cancel();
}
}).create();
promptDialog.show();
}
return false;
}
사전에
감사를 해결하기 위해 도와주세요