【问题标题】:Recognise click over current location marker in Android Google Maps在 Android 谷歌地图中识别点击当前位置标记
【发布时间】:2014-12-30 00:06:14
【问题描述】:

在适用于 Android 的 Google Maps V2 中,识别用户单击当前位置标记(带有白色边框的蓝色标记)时的最佳选择是什么?

我在互联网上没有任何例子,我能想象的唯一方法是:

googleMap.setOnMapClickListener(new OnMapLongClickListener() {
            @Override
            public void onMapClick(LatLng point) {
                // currentLocation is the location set by onLocationChanged method
                if (currentLocation != null
                            && (currentLocation.getLatitude() == point.latitude
                            && currentLocation.getLongitude() == point.longitude)) {
                        toastIt("Click over current position!");
                    }
            }
        });

【问题讨论】:

标签: android google-maps-android-api-2


【解决方案1】:

您可以添加用户位置标记并参考它的 id:

mUserMarkerId = mMap.addMarker(new MarkerOptions().position(latLng)
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_BLUE)))
                        .getId();

使用onMarkerClickListener,您可以检测点击的标记是否是用户标记

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {
            if (marker.getId().equalsIgnoreCase(mUserMarkerId))
                // Clicked user marker
            }

            return true;
        }
    });

【讨论】:

    【解决方案2】:

    这是更好的解决方案

    map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                @Override
                public void onMapClick(LatLng latLng)
                {
                    Location location=getLocation();
                    if(map.isMyLocationEnabled()&&location!=null)
                    {
                        float distance[]=new float[1];
                        Location.distanceBetween(location.getLatitude(), location.getLongitude(), latLng.latitude, latLng.longitude, distance);
                        if(distance[0]<location.getAccuracy())
                        {
                            Log.d(TAG, "onMapClick: It is user!");
                        }
                    }
                }
            });
    

    【讨论】:

      【解决方案3】:

      我知道现在已经晚了,但对于任何搜索此内容的人来说 现在原生支持(自 2017 年 9 月 18 日起)

      来自下面提到的页面:

      使用新的 GoogleMap.OnMyLocationClickListener 来检测用户何时单击“我的位置”蓝点。 (问题 35822305)

      @Override
      public void onMyLocationClick(@NonNull Location location) {
        Toast.makeText(this, "Current location:\n" + location, Toast.LENGTH_LONG).show();
      } 
      

      我建议关注此页面以获取最新更新 https://developers.google.com/maps/documentation/android-api/releases

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        • 2016-03-07
        • 2020-10-23
        • 1970-01-01
        • 1970-01-01
        • 2017-03-06
        相关资源
        最近更新 更多