我的应用程序会找到我周围的用户并将其显示在地图上。我可以在 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;
}
希望有帮助,加油!