Android:使标记不可点击

3

您好,我正在创建类似于以下的标记:

Marker thisUserMarker = map.addMarker(new MarkerOptions()
           .position(new LatLng(CURRENT_LAT, CURRENT_LNG))
           .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marker_current_location)));

在这之后,我希望根据 CURRENT_LAT 和 CURRENT_LNG 的位置将标记点设置为不可点击。这是否可能?


1
你所说的“标记为不可点击”是什么意思? - Blackbelt
你的意思是用户不能点击标记吗? - Jaydip Umaretiya
@Jaydip Umaretiya:是的。 - Bahu
你可以看到下面有两个答案,现在你可以使用它们。 - Jaydip Umaretiya
3个回答

4

我使用了这种解决方法,当您单击一个标记时返回true。

getMap().setOnMarkerClickListener(new OnMarkerClickListener() {

    public boolean onMarkerClick(Marker marker) {
        return true;
    }
});

另一种可能的方法是实现 implements OnMarkerClickListener,然后在你的 onMarkerClick() 函数中将其与不想被点击的标记进行比较,并什么都不做。

@Override
public boolean onMarkerClick(final Marker marker) {

    if (marker.equals(myMarker)) 
    {
        //Do nothing
    }
}

您还可以查看这个问题:google-maps-api-v2-how-to-make-markers-clickable

您可以查看这个问题,了解如何使标记可点击。

@Blackbelt 打错字了。 - Skizo-ozᴉʞS ツ
它会这样做,因为它不是使用getText()或关于marker的其他内容,而是像OP想要的那样什么都不显示... 好吧,至少在我的旧项目中它起作用了... - Skizo-ozᴉʞS ツ

1
将Clickable设置为这样。
     MarkerOptions marker=new MarkerOptions().position(resto).title(getAddress(28.6200, 77.2100));
    marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
    map.addMarker(marker);

   map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            if(marker.getTitle().equals(getAddress(28.6200, 77.2100))){
                Log.e("Delhi","Delhi");
                Log.e("Destance",""+distance(resto.latitude,resto.longitude,Delhi1.latitude,Delhi1.longitude,"M"));

            }else if(marker.getTitle().equals("Marker in Delhi1")){
                Log.e("Delhi1","Delhi1");

            }
                return false;

        }
    });

GetAddress方法()

   public String getAddress(double lat, double lng) {
    Geocoder geocoder = new Geocoder(MapsActivity.this, Locale.getDefault());
    String Address=" ";
    Log.e("ADDRESS","ADDRESS");
    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);
        String add = obj.getAddressLine(0);
        Address= obj.getAddressLine(0);

        add = add + "\n" + obj.getCountryName();
        add = add + "\n" + obj.getCountryCode();
        add = add + "\n" + obj.getAdminArea();
        add = add + "\n" + obj.getPostalCode();
        add = add + "\n" + obj.getSubAdminArea();
        add = add + "\n" + obj.getLocality();
        add = add + "\n" + obj.getSubThoroughfare();

        Log.e("IGA", "Address" + add);


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    return Address;
}

获取 getAddress 时,出现错误 "The method getAddress(double, double) is undefined for the type new GoogleMap.OnMarkerClickListener(){}"。 - Bahu

0
也许你可以重写 ClickListener。我不确定经纬度值是否保存在 Marker arg0 事件中。
mMap.setOnMarkerClickListener(new OnMarkerClickListener()
                {
                    @Override
                    public boolean onMarkerClick(Marker arg0) {
                        return true;
                    }
                });  

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接