在Google Maps API for Android中,位於右上角的按鈕用於在地圖中定位您的位置。重新定位Google地圖片段中的MyLocation按鈕
我想知道是否可以重新定位這個圖標,這是默認情況下Android的谷歌地圖的API,因爲在頂部我打算添加一個EditText,就好像它是浮動的。
在Google Maps API for Android中,位於右上角的按鈕用於在地圖中定位您的位置。重新定位Google地圖片段中的MyLocation按鈕
我想知道是否可以重新定位這個圖標,這是默認情況下Android的谷歌地圖的API,因爲在頂部我打算添加一個EditText,就好像它是浮動的。
我可以建議2個選項。 不過,我強烈建議你使用的第一個 - 更多的經典和簡單的:
您可以重新定位任何的GoogleMap的通過從角落設置Padding
進行控制。在你的情況,我會從頂部設置一些填充:
googleMap.setPadding(0, numTop, 0, 0); //numTop = padding of your choice
這也將改變地圖相機。因此,這是偉大的那種用例的中心位置(添加標題/其他浮動控件)。
禁用這將是容易的:
googleMap.getUiSettings().setMyLocationButtonEnabled(false)
但是,創建一個新的會更棘手 - 主要是因爲它更難以設置一個完整的。
FloatingActionButton
,看起來像在谷歌地圖應用程序(example)之一。
定義的的onClick事件將攝像機移動到用戶的當前位置(你將不得不使用Location Service這個
樣品:
//Acquire a reference to the system Location Manager
LocationManager locationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//Acquire the user's location
Location selfLocation = locationManager
.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
//Move the map to the user's location
LatLng selfLoc = new LatLng(selfLocation.getLatitude(), selfLocation.getLongitude());
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(selfLoc, 15);
googleMap.moveCamera(update);
如果您注意到,當您單擊「我的位置」按鈕時,它會開始跟蹤您並相應地移動相機。爲了產生這種效果,您需要覆蓋googleMap.onCameraMove
和googleMap.onCameraIdle
,並編寫您的應用程序代碼,以便相機閒置時,地圖將繼續跟隨用戶,每當用戶移動相機時,地圖都會停止。
樣品爲onCameraIdle
:
//Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
//Acquire the user's location
Location selfLocation = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
LatLng cameraLocation = googleMap.getCameraPosition().target;
float[] results = new float[3];
Location.distanceBetween(selfLocation.getLatitude(), selfLocation.getLongitude(), cameraLocation.latitude, cameraLocation.longitude, results);
if (results[0] < 30) //30 Meters, you can change that
googleMap.moveCamera(...) //Move the camera to user's location
View locationButton = ((View) findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
locationButton.setVisibility(View.GONE);
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
// position on right bottom
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
rlp.setMargins(0, 180, 180, 0);
您可以設置保證金,你可能找到我的位置按鈕。