首页 > 解决方案 > 单击地图上的更改标记图标

问题描述

您好,我正在制作谷歌地图应用程序,在我的应用程序中添加区域测量功能,在区域测量中,用户单击地图,如果用户指向七个地方,则标记设置在指向区域上,然后设置七个标记在指向的地方,但我在每个点上都更改了标记图标,但图标永远不会改变请帮助我在每次点击时更改标记图标

 My code is

     public void onMapReady(final GoogleMap googleMap) {
            mMap = googleMap;
            marker = BitmapDescriptorFactory.fromResource(R.drawable.marker);
            pointaa = BitmapDescriptorFactory.fromResource(R.drawable.pointaa);
            pointb = BitmapDescriptorFactory.fromResource(R.drawable.pointb);

            changeView(getSharedPreferences("settings", Context.MODE_PRIVATE)
                    .getInt("mapView", GoogleMap.MAP_TYPE_NORMAL));

            mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(final Marker clickcount) {

                    marker = BitmapDescriptorFactory.fromResource(R.drawable.marker);
                    pointaa = BitmapDescriptorFactory.fromResource(R.drawable.pointaa);
                    pointb = BitmapDescriptorFactory.fromResource(R.drawable.pointb);
                    addPoint(clickcount.getPosition());

                    return true;
                }
            });



            mMap.setOnMapClickListener(new OnMapClickListener() {
                @Override
                public void onMapClick(final LatLng center) {
                    clickcounter=clickcounter+1;
    if (clickcounter==1){
        if (marker!=null){
            Toast.makeText(getApplicationContext(),"1",Toast.LENGTH_SHORT).show();
            marker = BitmapDescriptorFactory.fromResource(R.drawable.marker);

        }



    }if (clickcounter==2){
                        Toast.makeText(getApplicationContext(),"2",Toast.LENGTH_SHORT).show();
                        pointaa = BitmapDescriptorFactory.fromResource(R.drawable.pointaa);
                        addPoint(center);


                    }if (clickcounter==3){
                        Toast.makeText(getApplicationContext(),"3",Toast.LENGTH_SHORT).show();
                        pointb = BitmapDescriptorFactory.fromResource(R.drawable.pointb);
                        addPoint(center);

                    }

                }
            });


      private Marker drawMarker(final LatLng center) {
            return mMap.addMarker(
                    new MarkerOptions().position(center).flat(true).anchor(0.5f, 0.5f).icon(pointb).icon(pointaa).icon(marker));

        }

标签: javaandroidgoogle-maps

解决方案


使用下面的代码

  mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {

                marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));

                return true;
            }
        });

推荐阅读