1

我的应用程序会找到我周围的用户并将其显示在地图上。我可以在 mapView 上添加 overlayItem,但是如何为图像添加一些标题,例如用户名。 在此处输入图像描述

单击该项目后,将显示一个对话框。

在此处输入图像描述

当用户单击框时,我可以设置一个可以调用新活动的侦听器吗?我的意图是我可以通过overlayItem 访问用户配置文件。有可能这样做吗?谢谢

我找到了解决方案,想分享给有兴趣的人。由于我无法回答自己的问题,因此我将编辑该问题。

为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);
        }
    }
}

要在对话框中启动新活动,您需要覆盖 ItemizedOverlay 类中的 onTap 方法:

@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;
}

希望有帮助,加油!

4

0 回答 0