Как я могу установить заголовок / заголовок для наложенного элемента и создать прослушиватель, нажимающий кнопку onclick / long, для этого элемента, чтобы начать новое действие? - PullRequest
1 голос
/ 30 марта 2012

Мое приложение найдет пользователей вокруг себя и отобразит его на карте. Я могу добавить overlayItem в mapView, но как я могу добавить заголовок для изображения, например, имя пользователя. enter image description here

После того, как я щелкнул по элементу, появится диалоговое окно.

enter image description here

Могу ли я установить прослушиватель, который может вызывать новое действие, когда пользователь щелкает поле? Мое намерение состоит в том, чтобы каким-то образом я мог перейти в профиль пользователя с помощью overlayItem. Возможно ли это сделать? Спасибо

Я нашел решение и хотел бы поделиться с заинтересованными лицами. Поскольку я не могу ответить на свой вопрос, я отредактирую вопрос.

Для добавления заголовка для оверлея:

 @Override
public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow)
{
    super.draw(canvas, mapView, shadow);

    if (shadow == false)
    {
        //cycle through all overlays
        for (int index = 0; index < mOverlays.size(); index++)
        {
            OverlayItem item = mOverlays.get(index);

            // Converts lat/lng-Point to coordinates on the screen
            GeoPoint point = item.getPoint();
            Point ptScreenCoord = new Point() ;
            mapView.getProjection().toPixels(point, ptScreenCoord);

            //Paint
            Paint paint = new Paint();
            paint.setTextAlign(Paint.Align.CENTER);
            paint.setTextSize(mTextSize);
            paint.setARGB(150, 0, 0, 0); // alpha, r, g, b (Black, semi see-through)

            //show text to the right of the icon
            canvas.drawText(item.getTitle(), ptScreenCoord.x, ptScreenCoord.y+mTextSize, paint);
        }
    }
}

Для запуска нового действия в диалоговом окне необходимо переопределить метод onTap в классе ItemizedOverlay:

@Override
protected boolean onTap(int index) {
    OverlayItem item = mOverlays.get(index);


    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    builder.setMessage("Are you sure you want to see this user's profile?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   Intent i = new Intent();
                    i = new Intent(mContext,
                            ViewFdProfile.class);
                    mContext.startActivity(i);
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
    AlertDialog alert = builder.create();
    alert.show();


    return true;
}

Надеюсь, это поможет, ура!

...