缩放后标记针跳到地图上的另一个位置(不在我的纬度或经度上)

Marker pin bouncing to another location on map after zoom (not on my latitude or longitude)

这是我在 eclipse 中的代码,当我放大地图并点击图钉 (Marker) 时,它不会指向我的经纬度,而是移动到不同的位置。

MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.flat(true);
        markerOptions.anchor(0.5f, 0.5f);
        markerOptions.icon(BitmapDescriptorFactory
                .fromResource(R.drawable.pin_client_org));
        markerOptions.title(getResources().getString(
                R.string.text_source_pin_title));
        markerOptions.position(
                new LatLng(latLng.latitude,
                        latLng.longitude));
        markerSource = map.addMarker(markerOptions);


private void setMarker(LatLng latLng, boolean isSource) {
        if (!MapFragment.this.isVisible())
            return;
        if (getActivity() != null && getActivity().getCurrentFocus() != null) {
            // inputMethodManager.hideSoftInputFromWindow(getActivity()
            // .getCurrentFocus().getWindowToken(), 0);
            activity.hideKeyboard();
        }

        if (latLng != null && map != null) {
            if (isSource) {
                if (markerSource == null) {
                    MarkerOptions markerOptions = new MarkerOptions();
                    markerOptions.flat(true);
                    markerOptions.anchor(0.5f, 0.5f);
                    markerOptions.icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.pin_client_org));
                    markerOptions.title(getResources().getString(
                            R.string.text_source_pin_title));
                    markerOptions.position(
                            new LatLng(latLng.latitude,
                                    latLng.longitude));
                    markerSource = map.addMarker(markerOptions);

                    //markerSource.setDraggable(false);
                } else {
                    markerSource.setPosition(latLng);
                }
                CameraUpdateFactory.newLatLng(latLng);

            } else {
                if (markerDestination == null) {
                    MarkerOptions opt = new MarkerOptions();
                    opt.position(latLng);
                    opt.title(getResources().getString(
                            R.string.text_destination_pin_title));
                    opt.icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.destination_pin));
                    markerDestination = map.addMarker(opt);

                    markerDestination.setDraggable(true);

                    if (markerSource != null) {
                        LatLngBounds.Builder bld = new LatLngBounds.Builder();

                        bld.include(new LatLng(
                                markerSource.getPosition().latitude,
                                markerSource.getPosition().longitude));
                        bld.include(new LatLng(
                                markerDestination.getPosition().latitude,
                                markerDestination.getPosition().longitude));
                        //LatLngBounds latLngBounds = bld.build();
                        //map.moveCamera(CameraUpdateFactory.newLatLngBounds(
                        //  latLngBounds, 30));
                    } else {
                        CameraUpdateFactory.newLatLng(latLng);
                    }

                } else {
                    markerDestination.setPosition(latLng);
                }
            }

            getAddressFromLocation(markerSource.getPosition(), etSource);
        } else {
            Toast.makeText(getActivity(), getResources().getString(
                            R.string.unable_location),
                    Toast.LENGTH_LONG).show();
        }
    }

    super.onActivityCreated(savedInstanceState);
    // activity.layoutDestination.setVisibility(View.VISIBLE);
    // activity.tvTitle.setVisibility(View.GONE);

    activity.btnNotification.setVisibility(View.VISIBLE);
    activity.tvTitle.setVisibility(View.VISIBLE);
    activity.setIcon(R.drawable.fare_info);
    activity.setTitle(getString(R.string.text_make_request));
    activity.btnNotification.setOnClickListener(this);
    // etSource = activity.etSource;
    // activity.imgClearDst.setOnClickListener(this);
    adapter=new PlacesAutoCompleteAdapter(activity, R.layout.autocomplete_list_text);

    adapterDestination=new PlacesAutoCompleteAdapter(activity, R.layout.autocomplete_list_text);

    etSource.setAdapter(adapter);
    locHelper=new LocationHelper(activity);

    locHelper.setLocationReceivedLister(this);
    etDestination.setAdapter(adapterDestination);
    etSource.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick (View v){
            etSource.setText("");
            layoutMarker.setVisibility(View.GONE);
            if (sendReqLayout.getVisibility() == View.VISIBLE) {
                cancelConfirmation();
            }
        }
    });

    etSource.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange (View v,boolean hasFocus){
            // TODO Auto-generated method stub
            if (hasFocus) {
                etSource.setText("");
                layoutMarker.setVisibility(View.GONE);
                if (sendReqLayout.getVisibility() == View.VISIBLE) {
                    cancelConfirmation();
                }
            }
        }
    });

    etSource.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick (AdapterView < ? > arg0, View arg1,int arg2, long arg3){
            final String selectedDestPlace = adapter.getItem(arg2);

            new Thread(new Runnable() {
                @Override
                public void run() {
                    final LatLng latlng = getLocationFromAddress(selectedDestPlace);
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            isMapTouched = true;
                            curretLatLng = latlng;
                            isSource = true;
                            map.clear(); //25-02-2016
                            setMarker(curretLatLng, isSource);
                            //setMarkerOnRoad(curretLatLng, curretLatLng);
                            animateCameraToMarker(curretLatLng, true);
                            stopUpdateProvidersLoaction();
                            getAllProviders(curretLatLng);

                        }
                    })
                }
            })
        });
    });

这就是我的代码。请帮助我理解这个模糊的问题。

地图的问题是当你滚动地图时它会改变位置,当你点击地图上的任何地方时你的点击不会响应它应该在的地方所以你只能设法停止你的地图滚动。

这应该可以解决您的问题。