2015-06-28 12 views
1

Я google map apis для своего текущего местоположения. Я работаю над приложением карты, в котором он сначала загружает текущую позицию, а затем пользователь может указывать на любое место на карте. Моя проблема заключается в том, что если я перемещаюсь, то мое местоположение снова и снова перемещается в мою текущую позицию, и пользователь не может указать нужное местоположение на карте, поскольку оно снова направляется к его текущему местоположению. Мой код приведен ниже, в котором я использую код для инициализации карты. Ваша помощь будет оценена по достоинству.Как отключить отслеживание местоположения текущей карты Google после первой загрузки андроида

private static final LocationRequest REQUEST = LocationRequest.create() 
      .setInterval(8000) // 5 seconds 
      .setFastestInterval(16) // 16ms = 60fps 
      .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

private void setUpMapIfNeeded() { 
     if (mMap == null) { 

      mMap = ((SupportMapFragment) getSupportFragmentManager() 
        .findFragmentById(R.id.map)).getMap(); 
      mMap.clear(); 
      mMap.setOnMapClickListener(MyLocationActivity.this); 

      if (mMap != null) { 
       mMap.setOnMapClickListener(MyLocationActivity.this); 
       mMap.setMyLocationEnabled(true); 
       mMap.setBuildingsEnabled(true); 
       mMap.getUiSettings().setCompassEnabled(false); 
       mMap.setIndoorEnabled(true); 
       mMap.setMapType(mMap.MAP_TYPE_NORMAL); 
       mMap.setTrafficEnabled(true); 
      } 
     } 
    } 

    private void setUpLocationClientIfNeeded() { 
     if (mLocationClient == null) { 
      mLocationClient = new LocationClient(getApplicationContext(), 
        connectionCallbacks, onConnectionFailedListener); 
     } 
    } 

    ConnectionCallbacks connectionCallbacks = new ConnectionCallbacks() { 

     @Override 
     public void onDisconnected() { 

     } 

     @Override 
     public void onConnected(Bundle connectionHint) { 
      showLoadingDialog(); 
      mLocationClient.requestLocationUpdates(REQUEST, locationListener); 
     } 
    }; 

    OnConnectionFailedListener onConnectionFailedListener = new OnConnectionFailedListener() { 

     @Override 
     public void onConnectionFailed(ConnectionResult result) { 

     } 
    }; 

    OnMyLocationChangeListener onMyLocationChangeListener = new OnMyLocationChangeListener() { 

     @Override 
     public void onMyLocationChange(Location location) { 

     } 
    }; 

    LocationListener locationListener = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location location) { 

      dismissLoadingDialog(); 

      float diff = 0; 

      if (lastLocation != null) { 
       diff = location.distanceTo(lastLocation); 
      } 

      if ((lastLocation == null) || (diff > 5)) { 

       LatLng latLng = new LatLng(location.getLatitude(), 
         location.getLongitude()); 

       CameraPosition cameraPosition = new CameraPosition(latLng, 14, 
         45, 0); 

       CameraUpdate cameraUpdate = CameraUpdateFactory 
         .newCameraPosition(cameraPosition); 

       mMap.animateCamera(cameraUpdate, 25, null); 
      markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.flag)); 
       mMap.getUiSettings().setZoomControlsEnabled(true); 
       mMap.getUiSettings().setZoomGesturesEnabled(true); 
       lastLocation = location; 
      } 

     } 
    }; 
+0

Вы проинформировали lastLocation? –

+0

Спасибо @AditiParikh за ваш ответ. Да, я инициализирую свой последний сайт. Пожалуйста, проверьте конец моего метода, здесь я инициализирую его текущими координатами. –

+0

Да .. Он будет вызван, когда ваше состояние будет удовлетворено. Попробуйте отладить код ... Проверьте, выполнено ли ваше условие или нет. –

ответ

1

@using_coding может быть много способов сделать это, я не проверял этот код, но может быть, это поможет вам в вашем сценарии.

1: Сделайте булеву проверку в создании вашей деятельности, как:

boolean isFirstTime = true; 

В вашем месте слушателя в первый раз составляю:

mMap.setMyLocationEnabled(true); 

И в этом столбце сделать свой isFirstTime в быть ложным и в этом блоке сделать MyLocationEnabled ложным. Таким образом, если местоположение пользователей будет изменено, тогда он будет проверять логическое значение, и если он является ложным, то он не обновит ваше текущее местоположение.

2: Второй способ - это не решение, но вы также можете это сделать, как вы можете установить время location request, чтобы быть относительно большим.

 Смежные вопросы

  • Нет связанных вопросов^_^