Android地图,点上有文本视图和按钮

Android地图,点上有文本视图和按钮,android,button,map,marker,Android,Button,Map,Marker,在我的应用程序中,我想显示带有指针的地图,在指针上方我想显示带有按钮的文本视图。使用该按钮,我想进入下一个活动。下面是我显示点的代码,但是如何用文本和按钮显示点的右侧。以及如何为其编写btn操作 class MapOverlay extends com.google.android.maps.Overlay { public boolean draw(Canvas canvas, MapView mapView,boolean shadow, long when) {

在我的应用程序中,我想显示带有指针的地图,在指针上方我想显示带有按钮的文本视图。使用该按钮,我想进入下一个活动。下面是我显示点的代码,但是如何用文本和按钮显示点的右侧。以及如何为其编写btn操作

class MapOverlay extends com.google.android.maps.Overlay
 {
    public boolean draw(Canvas canvas, MapView mapView,boolean shadow, long when)
    {
        super.draw(canvas, mapView, shadow);                  

        //---translate the GeoPoint to screen pixels---
        Point screenPts = new Point();

        mapView.getProjection().toPixels(p, screenPts);
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker);           
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-100, null);        

        mapView.getProjection().toPixels(q, screenPts);
        @SuppressWarnings("unused")
        Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.blue);           
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-100, null);        
        return true;
    }
 }



p = new GeoPoint((int) (latPt * 1E6),(int) (lngPt * 1E6));
    Log.e("point p ",""+p);

    mapController.animateTo(p);
    mapController.setZoom(16);
    mapView.invalidate();
    mapView.setTraffic(true);
    mapController = mapView.getController();

    MapOverlay mapOverlay = new MapOverlay();
    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(mapOverlay);
class MapOverlay扩展了com.google.android.maps.Overlay
{
公共布尔绘制(画布画布、地图视图、地图视图、布尔阴影、长时间)
{
super.draw(画布、地图视图、阴影);
//---将地质点转换为屏幕像素---
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
位图bmp=BitmapFactory.decodeResource(getResources(),R.drawable.marker);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-100,空);
getProjection().toPixels(q,screenPts);
@抑制警告(“未使用”)
位图bmp1=BitmapFactory.decodeResource(getResources(),R.drawable.blue);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-100,空);
返回true;
}
}
p=新的地质点((int)(latPt*1E6),(int)(lngPt*1E6));
Log.e(“点p”和“+p”);
mapController.animateTo(p);
mapController.setZoom(16);
mapView.invalidate();
mapView.setTraffic(true);
mapController=mapView.getController();
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);

我是通过使用视图而不是覆盖来实现的,因此您可以使用addItem为地图中的每个项目添加一个新视图。这是代码:

注释视图

public AnnotationView(final Context context,final Object object) {
    super(context);
    setOrientation(VERTICAL);
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.map_overlay, this, true);

    // Set the textview

    lBubble = (LinearLayout) findViewById(R.id.lAnnotation);
    txtPlace = ((TextView) (findViewById(R.id.txtPlace)));
    txtPlace.setText(object.getName());

    // set button touch listener

    ((ImageButton) (findViewById(R.id.btnPlace)))
            .setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //Do anything
                };
            });
    // add your overlay on mapview by geopoint

    btnMarker = ((ImageButton) (findViewById(R.id.btnMarker)));
    btnMarker.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
//Do anything           };
    });

    setLayoutParams(new MapView.LayoutParams(
            MapView.LayoutParams.WRAP_CONTENT,
            MapView.LayoutParams.WRAP_CONTENT, new GeoPoint(
                    (int) (object.getLatitude() * 1E6),
                    (int) (object.getLongitude() * 1E6)),
            MapView.LayoutParams.BOTTOM_CENTER));
}
然后我创建了它并添加到地图中,如:

overlay = new AnnotationView(this, object);
mapView.addView(overlay);
地图覆盖布局正是您希望在地图上显示为覆盖的线性布局(图像、按钮…)

我只有一个缩放比例的问题,因为点在缩放时有点变化,我正在尝试解决它

希望有帮助

干杯