OnClickListener的图钉 [英] OnClickListener for pushpin

查看:72
本文介绍了OnClickListener的图钉的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,我已经使用谷歌地图和叠加。我已经使用图钉的图像指向的GeoPoint。

我想成立一​​个 OnClickListener 事件的图钉。当用户触摸针,我想敬酒的消息。下面是code。

 进口的java.util.List;

进口com.google.android.maps.GeoPoint;
进口com.google.android.maps.MapActivity;
进口com.google.android.maps.MapController;
进口com.google.android.maps.MapView;
进口com.google.android.maps.Overlay;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.graphics.Canvas;
进口android.graphics.Point;
进口android.os.Bundle;
进口android.widget.Toast;

公共类Googlemap1_6Activity扩展MapActivity
{
    / **第一次创建活动时调用。 * /
    图形页面图形页面;
    MapController MC;
    的GeoPoint磷;

类Mapoverlay扩展com.google.android.maps.Overlay
{

    @覆盖
    公共布尔平局(画布油画,图形页面图形页面,布尔阴影,
            时长)
    {
        // TODO自动生成方法存根
        super.draw(帆布,图形页面,阴影,时);

        点screenPts =新的点();
            MapView.getProjection()在toPixels(对,screenPts)。
            BMP位= BitmapFactory.de codeResource(getResources(),R.drawable.pushpin2);
            canvas.drawBitmap(BMP,screenPts.x,screenPts.y-26,空);


        返回true;
    }

    @覆盖
    公共布尔中的onTap(GeoPoint对象PL,图形页面图形页面){
        // TODO自动生成方法存根


         如果(pl.equals(P))
        {

             Toast.makeText(getBaseContext(),
                        这是国际机场,
                        Toast.LENGTH_LONG).show();
         }

         返回super.onTap(PL,图形页面);
}

}

@覆盖
公共无效的onCreate(包savedInstanceState){

    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);

    串lat_coordinates [] = {27.700556};
    串lng_coordinates [] = {85.3630};

    双纬度= Double.parseDouble(lat_coordinates [0]);
    双LNG = Double.parseDouble(lng_coordinates [0]);

    P =新的GeoPoint(
            (INT)(LAT * 1E6)
            (中间体)(LNG * 1E6));

    图形页面=(图形页面)findViewById(R.id.mapView);
    MC = mapView.getController();
    mapView.setBuiltInZoomControls(真正的);
    mc.setZoom(10);
    mc.animateTo(对);


    Mapoverlay MapOverlay =新Mapoverlay();
    名单<覆盖> listofOverlays =调用MapView.getOverlays();
    listofOverlays.clear();
    listofOverlays.add(MapOverlay);

    mapView.invalidate();


}
@覆盖
保护的布尔isRouteDisplayed(){
    // TODO自动生成方法存根
    返回false;
}

}
 

解决方案

您重写自己的叠加,所以你要自己处理的标签。为什么不使用<一个href="https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/ItemizedOverlay"相对=nofollow> ItemizedOverlay 。重写<一href="https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/ItemizedOverlay#onTap%28int%29"相对=nofollow> onTab(INT指数)那里,你做。 它也有一个有用的<一个href="https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/ItemizedOverlay#hitTest%28Item,%20android.graphics.drawable.Drawable,%20int,%20int%29"相对=nofollow>则hitTest 方法。

Here I have used google map and an overlay. I have used an image of pushpin to point to the GeoPoint.

I want to set an OnClickListener event for the push pin. When user touches the pin, I want to toast a message. Below is the code.

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.widget.Toast;

public class Googlemap1_6Activity extends MapActivity 
{
    /** Called when the activity is first created. */
    MapView mapView;
    MapController mc;
    GeoPoint p;

class Mapoverlay extends com.google.android.maps.Overlay
{

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
            long when) 
    {
        // TODO Auto-generated method stub
        super.draw(canvas, mapView, shadow, when);

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


        return true;
    }

    @Override
    public boolean onTap(GeoPoint pl, MapView mapView) {
        // TODO Auto-generated method stub


         if(pl.equals(p))
        {

             Toast.makeText(getBaseContext(),
                        "This is International Airport",
                        Toast.LENGTH_LONG).show();
         }

         return super.onTap(pl, mapView);
}

}

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String lat_coordinates[] ={"27.700556"};
    String lng_coordinates[] ={"85.3630"}; 

    Double lat = Double.parseDouble(lat_coordinates[0]);
    Double lng = Double.parseDouble(lng_coordinates[0]);

    p = new GeoPoint(
            (int) (lat*1E6),
            (int) (lng*1E6));

    mapView = (MapView) findViewById(R.id.mapView);
    mc=mapView.getController();
    mapView.setBuiltInZoomControls(true);
    mc.setZoom(10); 
    mc.animateTo(p);


    Mapoverlay MapOverlay  = new Mapoverlay();
    List<Overlay> listofOverlays = mapView.getOverlays();
    listofOverlays.clear();
    listofOverlays.add(MapOverlay);

    mapView.invalidate();


}
@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

}

解决方案

You Override your own Overlay, so you have to handle Tabs yourself. Why not using ItemizedOverlay. Override the onTab(int index) there and you are done. It has also a useful hitTest Method.

这篇关于OnClickListener的图钉的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆