高德地图---自定义飘窗

来源:互联网 发布:湘北vs山王数据 编辑:程序博客网 时间:2024/06/02 16:56

第一步继承类MainActivity extends Activity implements OnInfoWindowClickListener,InfoWindowAdapter

//给定位的mark添加infoWindow
aMap.setOnInfoWindowClickListener(this);// 设置点击infoWindow事件监听器
aMap.setInfoWindowAdapter(this);// 设置自定义InfoWindow样式

第二步 重写继承类中的方法

//infoWindow回调的方法    @Override    public View getInfoContents(Marker arg0) {        Log.e("infoWindow", "--------------getInfoContents---------------------");        View infoContent = getLayoutInflater().inflate(                R.layout.posi_layout, null);        render(arg0, infoContent);        return infoContent;    }    //当点击mark的时候会调用getInfoWindow  和 render方法 可以来显示或隐藏飘窗    @Override    public View getInfoWindow(Marker arg0) {        Log.e("infoWindow", "--------------getInfoWindow---------------------");        View infoContent = getLayoutInflater().inflate(                R.layout.posi_layout, null);        render(arg0, infoContent);        return infoContent;    }    private void render(Marker arg0, View infoContent) {        Log.e("infowindow", "----------------render--------------------------------");        ImageView image_navi=(ImageView) infoContent.findViewById(R.id.image_posi_navi); //自定义的飘窗布局  添加点击方法        image_navi.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                Log.e("render", "-----image_navi.setOnClickListener----------");                if(mark_posiAPP.getPosition().latitude==0 |mark_posiAPP.getPosition().longitude==0|Double.parseDouble(weidu)==0|Double.parseDouble(jingdu)==0){                    Toast.makeText(getApplicationContext(), "定位未成功不能进行路径规划", 0).show();                }else{                    Intent intent=new Intent(MainActivity.this,Activity_NaviChoose.class);                    intent.putExtra("la_start", mark_posiAPP.getPosition().latitude);                    intent.putExtra("ln_start", mark_posiAPP.getPosition().longitude);                    intent.putExtra("la_end", Double.parseDouble(weidu));                    intent.putExtra("ln_end", Double.parseDouble(jingdu));                    startActivity(intent);                }            }        });    }

第三步 通过点击mark显示或隐藏飘窗

//mark点击时调用的方法    @Override    public boolean onMarkerClick(Marker arg0) {        Log.e("mark","----------onMarkerClick--------------------------" );        if(flag_isShowInfoWindow){            Log.e("mark","----------onMarkerClick--------------------------" +flag_isShowInfoWindow);            aMap.clear();            MarkerOptions mark=new MarkerOptions();            mark.position(new LatLng(mark_posiAPP.getPosition().latitude, mark_posiAPP.getPosition().longitude));            BitmapDescriptor fromResource01 = new BitmapDescriptorFactory().fromResource(R.drawable.ic_point_view_num);            mark.icon(fromResource01);            aMap.addMarker(mark);            flag_isShowInfoWindow=false;        }else{  //显示            Log.e("mark","----------onMarkerClick--------------------------" +flag_isShowInfoWindow);            aMap.clear();            MarkerOptions mark=new MarkerOptions();            mark.position(new LatLng(mark_posiAPP.getPosition().latitude, mark_posiAPP.getPosition().longitude));            BitmapDescriptor fromResource01 = new BitmapDescriptorFactory().fromResource(R.drawable.ic_point_view_num);            mark.icon(fromResource01);            mark.title("我是titile"); //不写这个我这就显示不了 也不知道为什么            mark.snippet("我是sippet");            Marker addMarker2 = aMap.addMarker(mark);            addMarker2.showInfoWindow();            aMap.invalidate();// 刷新地图            flag_isShowInfoWindow=true;        }        return false;    }
0 0
原创粉丝点击