2017-04-05 50 views
3

通過拖動移動到地圖時,每秒都會回到當前位置,我無法在地圖附近看到視圖,如何阻止它每秒鐘移動到當前位置?只有當我的位置按鈕被點擊時,我纔想移動到我的位置..所以任何人都可以幫助我嗎?提前致謝。我的代碼是通過拖動移動到相機時總是每秒移動到當前位置

@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)); 

} 

回答

2

我已經實現了一個條件,實現自己的目標。當第一次調用onLocationChanged()時,它會將相機移動到當前位置。之後,它會在每秒鐘捕捉當前位置並將其存儲到mLastLocation = location;,但它不會移動相機。當用戶按下按鈕時,它將從mLastLocation中取出LatLong,並根據需要將相機移動到當前位置。

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; 
    } 

} 

在按鈕點擊:

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

所以我可以把那個代碼顯示當前位置一次? –

+0

但我想顯示當前位置一次,而加載第一次 –

+0

看看這裏http://stackoverflow.com/a/13905821/7784663 onLocationChanged監聽器 –

0

它非常容易。我總是在地圖上的新位置放置一個標記。

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)); 

      } 
     } 

我將相機移動到標記位置。讓我知道如果它的工作與否我會幫你:)

相關問題