如何更改谷歌地图我的位置默认按钮,例如浮动操作按钮?
这是mi XML
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.skybus.skybus.view.MapsActivity"
/>
<com.getbase.floatingactionbutton.FloatingActionsMenu
android:id="@+id/menu_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/margenes_fab"
app:fab_addButtonSize="normal"
fab:fab_addButtonColorNormal="?attr/colorPrimary"
fab:fab_labelStyle="@color/colorAccent"
fab:fab_labelsPosition="left">
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/accion_ubicacion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fab:fab_colorNormal="?attr/colorAccent"
fab:fab_icon="@drawable/map_marker"
fab:fab_size="mini"
fab:fab_title="Ubicacion" />
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/accion_ruta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fab:fab_colorNormal="?attr/colorAccent"
fab:fab_icon="@drawable/bus"
fab:fab_size="mini"
fab:fab_title="Ruta" />
</com.getbase.floatingactionbutton.FloatingActionsMenu>
</android.support.design.widget.CoordinatorLayout>
我希望ID为“accion_ubicacion”的浮动操作按钮具有Google的“我的位置”按钮的功能。
我希望你们所有人都能帮助我,谢谢你们。
假设您已成功初始化GoogleMap
,您有两种选择:
GoogleMap#setMyLocationEnabled(boolean)
对象上使用GoogleMap
方法来显示用户的当前位置,并显示Google Maps应用程序等浮动操作按钮。MapFragment
上显示自定义UI,则需要执行一些额外步骤。
使用MapFragment
在GoogleMap#setPadding(int, int, int, int)
周围设置一些填充物。这是为了确保您不会隐藏/隐藏Google的徽标和版权声明。你可以阅读更多关于它here。
添加填充并准备好UI(我猜你已经完成)之后,在按钮上添加一个单击监听器并在GoogleMap
对象上触发位置更新。示例代码可能如下所示:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
if (null != location){
// map is an instance of GoogleMap
map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(location.getLatitude(), location.getLongitude())) // Sets the center of the map to location user
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(40) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
} else {
// cannot retrieve user's location.
// fallback to display some generic location
}
确保在清单中添加适当的权限(ACCESS_COARSE_LOCATION
或ACCESS_FINE_LOCATION
)以获取用户的位置。从API 23开始,您可能必须明确要求用户许可。