package eu.hellek.viajafacil.android.map; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.drawable.Drawable; import android.widget.TextView; import com.google.android.maps.GeoPoint; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; import eu.hellek.gba.proto.LoginInfoProtos.LoginInfo.UserFavouritePositionProxy; import eu.hellek.viajafacil.android.R; import eu.hellek.viajafacil.android.ViajaFacilActivity; /* * overlays for from/to markers (A/B) */ public class MarkersOverlay extends ItemizedOverlay<OverlayItem> { private OverlayItem [] mOverlays = new OverlayItem[2]; private ViajaFacilActivity mContext; public MarkersOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public MarkersOverlay(ViajaFacilActivity context) { this(context.getResources().getDrawable(R.drawable.markera)); mContext = context; /* GeoPoint point1 = new GeoPoint((int)(-34.62671 * 1E6),(int)(-58.380489 * 1E6)); GeoPoint point2 = new GeoPoint((int)(-34.609122 * 1E6),(int)(-58.407869 * 1E6));*/ GeoPoint point1 = new GeoPoint(0, 0); GeoPoint point2 = new GeoPoint(0, 0); OverlayItem markerA = new OverlayItem(point1, mContext.getResources().getString(R.string.from), mContext.getResources().getString(R.string.from)); OverlayItem markerB = new OverlayItem(point2, mContext.getResources().getString(R.string.to), mContext.getResources().getString(R.string.to)); setOverlay(markerA, mContext.getResources().getDrawable(R.drawable.markera), ViajaFacilActivity.FROM); setOverlay(markerB, mContext.getResources().getDrawable(R.drawable.markerb), ViajaFacilActivity.TO); populate(); } @Override protected OverlayItem createItem(int i) { return mOverlays[i]; } @Override public int size() { return 2; } private void setOverlay(OverlayItem overlay, Drawable image, int pos) { boundCenterBottom(image); overlay.setMarker(image); mOverlays[pos] = overlay; } public void updateMarkerPosition(int fromOrTo, GeoPoint pos) { OverlayItem marker; if(fromOrTo == ViajaFacilActivity.FROM) { marker = new OverlayItem(pos, mContext.getResources().getString(R.string.from), mContext.getResources().getString(R.string.from)); setOverlay(marker, mContext.getResources().getDrawable(R.drawable.markera), ViajaFacilActivity.FROM); } else { marker = new OverlayItem(pos, mContext.getResources().getString(R.string.to), mContext.getResources().getString(R.string.to)); setOverlay(marker, mContext.getResources().getDrawable(R.drawable.markerb), ViajaFacilActivity.TO); } populate(); } public GeoPoint getFromPos() { return mOverlays[ViajaFacilActivity.FROM].getPoint(); } public GeoPoint getToPos() { return mOverlays[ViajaFacilActivity.TO].getPoint(); } @Override protected boolean onTap(int index) { if(ViajaFacilActivity.downloadedFavs) { final OverlayItem item = mOverlays[index]; final TextView tv; if(index == ViajaFacilActivity.FROM) { tv = (TextView)mContext.findViewById(R.id.txtFrom); } else { tv = (TextView)mContext.findViewById(R.id.txtTo); } AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle(R.string.store_favorite); builder.setMessage(tv.getText()); builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { UserFavouritePositionProxy.Builder builder = UserFavouritePositionProxy.newBuilder(); builder.setKey("dontcare"); builder.setName(tv.getText().toString()); builder.setLat((double)(item.getPoint().getLatitudeE6() / 1E6)); builder.setLon((double)(item.getPoint().getLongitudeE6() / 1E6)); UserFavouritePositionProxy fpp = builder.build(); mContext.addFavorite(fpp); } }); builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog dialog = builder.create(); dialog.show(); } return true; } }