2017-04-05 3 views
3

tout en déplaçant à la carte en le faisant glisser toujours revenir à l'emplacement actuel chaque seconde, je suis incapable de voir la vue sur la carte près de mon emplacement, comment l'empêcher de se déplacer à l'emplacement actuel chaque seconde? je veux aller à ma position seulement si mon bouton de localisation est cliqué .. donc quelqu'un peut-il m'aider? Merci d'avance. mon code esttout en bougeant à huis clos en déplaçant toujours se déplace à l'emplacement actuel chaque seconde

@Override 
public void onLocationChanged(Location location) 
{ 
mLastLocation = location; 
if (mCurrLocationMarker != null) { 
mCurrLocationMarker.remove(); 
} 

//Place current location marker 
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
/*MarkerOptions markerOptions = new MarkerOptions(); 
markerOptions.position(latLng); 
markerOptions.title("Current Position"); 
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); 
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions); 
*/ 

CameraUpdate center= 
CameraUpdateFactory.newLatLng(latLng); 
CameraUpdate zoom=CameraUpdateFactory.zoomTo(15.0f); 

mGoogleMap.moveCamera(center); 
mGoogleMap.animateCamera(zoom); 
//move map camera 
// mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,15.0f)); 

} 

Répondre

2

J'ai mis en place une condition pour atteindre votre objectif. Il déplacera la caméra à l'emplacement actuel lorsque la première fois onLocationChanged() est appelée. Après cela, il va prendre l'emplacement actuel dans chaque seconde et le stocker à mLastLocation = location; mais il ne bougera pas la caméra. Lorsque l'utilisateur appuie sur le bouton, il va chercher LatLong de mLastLocation et déplacer la caméra à l'emplacement actuel comme vous le souhaitez.

boolean isFirstTime = true; 

    @Override 
public void onLocationChanged(Location location) 
{ 
    mLastLocation = location; 
    if (mCurrLocationMarker != null) { 
    mCurrLocationMarker.remove(); 
    } 

    if(isFirstTime){ 
    //Place current location marker 
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
    /*MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.position(latLng); 
    markerOptions.title("Current Position"); 
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); 
    mCurrLocationMarker = mGoogleMap.addMarker(markerOptions); 
    */ 

    CameraUpdate center= 
    CameraUpdateFactory.newLatLng(latLng); 
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(15.0f); 

    mGoogleMap.moveCamera(center); 
    mGoogleMap.animateCamera(zoom); 
    //move map camera 
    // mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,15.0f)); 
    isFirstTime = false; 
    } 

} 

Sur CLICK:

btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       LatLng latLng = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude()); 
       CameraUpdate center= 
       CameraUpdateFactory.newLatLng(latLng); 
       CameraUpdate zoom=CameraUpdateFactory.zoomTo(15.0f);  
       mGoogleMap.moveCamera(center); 
       mGoogleMap.animateCamera(zoom); 
      } 
     }); 
+0

alors où puis-je mettre ce code pour montrer l'emplacement actuel une fois? –

+0

mais je veux montrer l'emplacement actuel une fois lors du chargement de la première fois –

+0

regardez ici http://stackoverflow.com/a/13905821/7784663 dans onLocationChanged écouteur –

0

très facile. J'ai toujours mis un marqueur sur la carte sur le nouvel emplacement.

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == PLACE_PICKER_REQUEST) { 
      if (resultCode == RESULT_OK) { 

       Place place = PlacePicker.getPlace(this,data); 

       CameraPosition cameraPosition = new CameraPosition.Builder() 
         .target(place.getLatLng()) 
         .zoom(17).build(); 

       Marker marker = mMap.addMarker(new MarkerOptions().position(place.getLatLng()).title(place.getName().toString())); 
       markers.add(marker); 

       mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

      } 
     } 

Je déplace la caméra vers la position du marqueur. laissez-moi savoir si son travail ou non, je vais vous aider :)