在不同的标记上设置onMarkerClickListener

时间:2017-06-19 09:59:11

标签: android google-maps android-fragments google-maps-api-3 android-snackbar

我想设置不同标记的OnMarkerClickListener。在这里,我想打印 i循环的变量值,只要点击相应的标记。所以我按照以下方式做了..但它不起作用,它在Snackbar上显示相同的最后一个值 170 在每个不同的标记点击..但我想得到0,10,20, 30 .... 170分别在快餐栏上点击不同的标记。

请帮忙......

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;



        // SETTING MARKER
        for(int i=0;i<180;i=i+10) {
            LatLng sydney = new LatLng(i, i);
            mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));

            //ON MARKER CLICK
            final int finalI = i;

            mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

                @Override
                public boolean onMarkerClick(Marker marker) {
                    Snackbar.make((View) findViewById(R.id.map),""+finalI,Snackbar.LENGTH_LONG).show();
                    return true;
                }
            });
        }
}

这是由循环创建的标记 但是我得到相同的价值到170

enter image description here

2 个答案:

答案 0 :(得分:1)

要解决您的问题,您应该有一个标记数组。

试试这个:

首先让您的应用实现GoogleMap.OnMarkerClickListener 然后创建一个Marker数组:

Marker[] marker = new Marker[20]; //change length of array according to you

然后在里面

onMapReady(){
mMap.setOnMarkerClickListener(this);
 for(int i=0;i<180;i=i+10) {
            LatLng sydney = new LatLng(i, i);
            marker[i] = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));


        }
}

然后终于

     @Override
    public boolean onMarkerClick(Marker marker) {
   //you can get assests of the clicked marker
   return false;
}

答案 1 :(得分:0)

我找到了一种方法......

        @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;

            // SETTING MARKER
            for(int i=0;i<180;i=i+10) {
                LatLng sydney = new LatLng(i, i);
                mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));

                }

        //ON MARKER CLICK
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {
            for(int i=0;i<180;i=i+10) {
                if (marker.getTitle().equals("Marker in Position" + i))
                    Snackbar.make((View) findViewById(R.id.map), "" + i, Snackbar.LENGTH_LONG).show();

            }return true;
        }
    });
    }