Мое приложение найдет пользователей вокруг себя и отобразит его на карте.
Я могу добавить overlayItem в mapView, но как я могу добавить заголовок для изображения, например, имя пользователя.
После того, как я щелкнул по элементу, появится диалоговое окно.
Могу ли я установить прослушиватель, который может вызывать новое действие, когда пользователь щелкает поле?
Мое намерение состоит в том, чтобы каким-то образом я мог перейти в профиль пользователя с помощью 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;
}
Надеюсь, это поможет, ура!