2016-01-05 279 views
6

我正在使用我的android應用程序中的Google地圖。我需要將地圖重新​​映射到客戶端的當前位置。我用下面的語句 -map.setmylocationenabled(true)不起作用

map.setmylocationenabled(true); 

這顯示在右上角的按鈕,但點擊不起作用。

按鈕點擊收聽:

mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { 
       @Override 
       public boolean onMyLocationButtonClick() { 
        mMap.addMarker(new MarkerOptions().position(myLatLng).title("My Location")); 
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLatLng, zoomLevel)); 
        return false; 
       } 
      }); 
+0

這只是啓用按鈕(它也默認啓用)。您應該使用FusedLocationProviderApi獲取位置,然後將地圖攝像機移動/縮放到當前位置,請參閱此處的示例:http://stackoverflow.com/a/34582595/4409409 –

+0

嘗試在該位置設置標記並那麼你會得到標記的點擊事件。 –

+0

@DanielNugent我在第一次啓動地圖時獲得了地圖。當我在地圖上移動時,問題就出現了,並且想要通過該按鈕的點擊將當前位置顯示在屏幕上。 –

回答

2

只取代碼my other answer here,並修改按鈕點擊監聽請求另一個位置:

  mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { 
       @Override 
       public boolean onMyLocationButtonClick() { 
        if (mGoogleApiClient != null) { 
         LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
        } 
        return false; 
       } 
      }); 

在onLocationChanged()的代碼,然後將重新中心的攝像頭位置,並隨後註銷位置再次更新:

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

    //move map camera 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11)); 

    if (mGoogleApiClient != null) { 
     LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
    } 
} 
+0

謝謝,但我已經解決了它。 –

+0

'setOnMyLocationButtonClickListener'中的'onMyLocationButtonClick'甚至不會調用!無論是'com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener()'也不'com.androidmapsextensions.GoogleMap.OnMyLocationButtonClickListener()' –

+0

@ Mr.Hyde它應該工作。請參閱此處獲取官方文檔:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#setOnMyLocationButtonClickListener(com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener) –

2

你有沒有試圖讓您的緯度和經度,使用 setmylocationenabled(true)後?

例如

gMap.setMyLocationEnabled(true); 
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 

您現在可以使用您的經度和緯度,並且相機動畫到您get.Hope它有助於緯度/經度位置。

+1

做了,但沒有區別 –

4

最後一行是爲我一個解決方案:

myMap.setMyLocationEnabled(true); 
myMap.getUiSettings().setMyLocationButtonEnabled(true); 
相關問題