在我的地图上控制用户手势

时间:2016-05-21 14:11:37

标签: android google-maps gesture

我是编码谷歌地图的新手, 我的问题是我如何控制用户手势拖动,放大和缩小。 因为我的代码总是在我放大/缩小时回到用户的当前位置,当我向上,向下,向左,向右拖动/向上滚动时。总是回到现在的位置。

它是我当前loc用户的代码

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {
            LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
            mMarker = mMap.addMarker(new MarkerOptions().position(loc));
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16));
        }
    };

1 个答案:

答案 0 :(得分:0)

您可以使用boolean仅在第一次移动相机时使用

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener {
    private GoogleMap mMap;
    private Marker mMarker;
    private boolean firstTime = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.setMyLocationEnabled(true);
        mMap.setOnMyLocationChangeListener(this);
    }

    @Override
    public void onMyLocationChange(Location location) {
        LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
        mMarker = mMap.addMarker(new MarkerOptions().position(loc));

        if (firstTime) {
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16));
            firstTime = false;
        }
    }
}

注意:请注意,此示例仅使用GoogleMap.OnMyLocationChangeListener,因为这是您在问题中使用的方法,但已弃用,您必须根据{{3}使用FusedLocationProviderApi }:

  

public final void setOnMyLocationChangeListener   (GoogleMap.OnMyLocationChangeListener侦听器)

     

此方法已弃用。使用   com.google.android.gms.location.FusedLocationProviderApi。   FusedLocationProviderApi提供改进的定位和功率   用法并由"我的位置"蓝点。见   例如,示例应用程序文件夹中的MyLocationDemoActivity   示例代码或位置开发人员指南。