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

第一步继承类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;
    }

猜你喜欢

转载自blog.csdn.net/shuiermengqi/article/details/50011985