Android 点击自定义MyPositionIcon可创建自定义MyPositionMarker的副本

Android 点击自定义MyPositionIcon可创建自定义MyPositionMarker的副本,android,google-maps-markers,Android,Google Maps Markers,我正在尝试替换mMpap.SetMyPositiontrue;与我自己的功能。我在这方面取得了一些成功,当点击我的位置图标的自定义图像时,它会使用我的自定义标记将相机移动到当前位置 除了点击“我的位置”图标,它会将标记的副本保留到该位置,并使用新标记移动到当前位置之外,其他一切都可以正常工作 我对安卓系统开发相当陌生,正在寻求帮助 onCreateBundle savedInstanceState中的代码是: 得到的位置是: 请提供帮助。根据您的情况,您可以尝试以下任一方法: 1.如果地图中只有

我正在尝试替换mMpap.SetMyPositiontrue;与我自己的功能。我在这方面取得了一些成功,当点击我的位置图标的自定义图像时,它会使用我的自定义标记将相机移动到当前位置

除了点击“我的位置”图标,它会将标记的副本保留到该位置,并使用新标记移动到当前位置之外,其他一切都可以正常工作

我对安卓系统开发相当陌生,正在寻求帮助

onCreateBundle savedInstanceState中的代码是:

得到的位置是:


请提供帮助。

根据您的情况,您可以尝试以下任一方法:
1.如果地图中只有一个标记,则在添加新标记之前,请使用mMap.clear清除地图;
2.如果有多个标记,则必须将当前标记对象保留为成员变量mMarker。然后,在添加新标记之前,可以使用mMarker.remove

添加新标记之前,请使用mMap.clear清除地图;谢谢@Akshay Bhat'AB'。成功了。如果你能回答下面的问题,我会接受的。问题:谢谢你的解决方案。我只是缺少了这行代码。
ImageView img = (ImageView) findViewById(R.id.myPostionButton);
img.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        getTheLocation();
    }
});
if (location != null) {
    final double latitude = location.getLatitude();
    final double longitude = location.getLongitude();
    LatLng latLng = new LatLng(latitude, longitude);
    final Marker marker = mMap.addMarker(
            new MarkerOptions()
                    .position(new LatLng(latitude, longitude))
                    .draggable(true)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker)));

    mMap.setTrafficEnabled(true);
    mMap.setMinZoomPreference(10.0f);
    mMap.setMaxZoomPreference(20.0f);
    //mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0f),4000 , null);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0f));
    mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
        @Override
        public void onCameraMove() {
            LatLng centerOfMap = mMap.getCameraPosition().target;
            marker.setPosition(centerOfMap);
        }
    });
    mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
        @Override
        public void onCameraIdle() {
            LatLng centerOfMap = mMap.getCameraPosition().target;
            marker.setPosition(centerOfMap);
            double latitude = centerOfMap.latitude;
            double longitude = centerOfMap.longitude;

            Geocoder geocoder = new Geocoder(getApplicationContext());
            try {
                List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);
                String str = addressList.get(0).getAddressLine(0) + ", ";
                str += addressList.get(0).getSubLocality() + ", ";
                str += addressList.get(0).getLocality() + ", ";
                str += addressList.get(0).getCountryCode();

                mFromAddress.setText(str);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}
mMap = googleMap;
getTheLocation();