Java 当点击标记时,是否可以在谷歌地图上显示覆盖项目?

Java 当点击标记时,是否可以在谷歌地图上显示覆盖项目?,java,android,eclipse,google-maps,Java,Android,Eclipse,Google Maps,我已经制作了一个简单的android应用程序,我还将谷歌地图集成到其中。。 它还能够连接到MySQL(localhost),使用经度和纬度值显示我想要的位置。。 我的问题是,当点击一个标记时(就像在foursquare中发生的那样),是否有可能在Google地图上创建另一个覆盖项 具体来说,我想显示一个包含地名的文本 这是我的显示覆盖项的课程。 我制作了一个onTap方法,但它显示了一个对话框,我想显示一个简单的文本框,显示地点的名称 package finddroid.map; im

我已经制作了一个简单的android应用程序,我还将谷歌地图集成到其中。。 它还能够连接到MySQL(localhost),使用经度和纬度值显示我想要的位置。。 我的问题是,当点击一个标记时(就像在foursquare中发生的那样),是否有可能在Google地图上创建另一个覆盖项

具体来说,我想显示一个包含地名的文本

这是我的显示覆盖项的课程。 我制作了一个onTap方法,但它显示了一个对话框,我想显示一个简单的文本框,显示地点的名称

    package finddroid.map;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.text.TextPaint;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem>
{

    private int markerHeight;

    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();

    private Context context;

    public CustomItemizedOverlay(Drawable defaultMarker)
    {
        super(boundCenterBottom(defaultMarker));
        markerHeight = ((BitmapDrawable) defaultMarker).getBitmap().getHeight();
        populate();
    }

    public CustomItemizedOverlay(Drawable defaultMarker, Context context)
    {
        this(defaultMarker);
        this.context = context;
    }

    @Override
    protected OverlayItem createItem(int i)
    {
        return mapOverlays.get(i);
    }

    @Override
    public int size()
    {
        return mapOverlays.size();
    }

    @Override
    //Event when a place is tapped
    protected boolean onTap(int index)
    {
        OverlayItem item = mapOverlays.get(index);
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setTitle(item.getTitle());
        dialog.setMessage(item.getSnippet());
        dialog.show();
        return true;
    }

    public void addOverlay(OverlayItem overlay) 
    {
        mapOverlays.add(overlay);
        this.populate();
    }   
}
包finddroid.map;
导入java.util.ArrayList;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.graphics.Paint;
导入android.graphics.Point;
导入android.graphics.Rect;
导入android.graphics.RectF;
导入android.graphics.drawable.BitmapDrawable;
导入android.graphics.drawable.drawable;
导入android.text.TextPaint;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.MapView;
导入com.google.android.maps.OverlayItem;
公共类CustomItemizeOverlay扩展了ItemizeOverlay
{
私人国际马克黑度;
私有ArrayList mapOverlays=新ArrayList();
私人语境;
公共自定义项目化Overlay(可绘制的defaultMarker)
{
super(boundCenterBottom(defaultMarker));
markerHeight=((BitmapDrawable)defaultMarker.getBitmap().getHeight();
填充();
}
public CustomItemizedOverlay(可绘制的默认标记,上下文)
{
这(默认标记);
this.context=上下文;
}
@凌驾
受保护的OverlayItem createItem(int i)
{
返回mapOverlays.get(i);
}
@凌驾
公共整数大小()
{
返回mapOverlays.size();
}
@凌驾
//点击某个位置时发生的事件
受保护的布尔onTap(整数索引)
{
OverlayItem item=mapOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(上下文);
setTitle(item.getTitle());
setMessage(item.getSnippet());
dialog.show();
返回true;
}
公共void addOverlay(OverlayItem overlay)
{
mapOverlays.add(叠加);
这个。填充();
}   
}

看看这个项目-。它使用自己的类扩展
FrameLayout
来显示引出序号

因此,如果要修改代码,请将其放入
onTap
方法中,以在录制的项目上方显示
TextView

TextView text = new TextView(context);
text.setText(item.getTitle());
MapView.LayoutParams params = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT, item.getPoint(), MapView.LayoutParams.BOTTOM_CENTER);
params.mode = MapView.LayoutParams.MODE_MAP;
mMapView.addView(text, params);
我认为这段代码简单易懂,您可以根据自己的需要进行相应的改进。要使其工作,您必须将
MapView
的实例传递给覆盖的构造函数,并将其保存到私有变量
mMapView

private MapVeiw mMapView;

public CustomItemizedOverlay(Drawable defaultMarker, Context context, MapView mapView) {
    this(defaultMarker);
    this.context = context;
    this.mMapView = mapView;
}

当您调用
new CustomItemizedOverlay()

时,不要忘记添加
MapView
作为参数之一,这是一个很好的示例,先生。但是我想我不能把它插入我的程序。我只是一个12个月大的android程序员。我将尝试改进我以前的代码。谢谢。哦,对不起,先生。但我仍然需要你的帮助。我不明白“为了让它工作,您必须将MapView实例传递给覆盖的构造函数,并将其保存到私有变量mMapView。”。