更改按钮我的FAB位置

问题描述 投票:0回答:1

如何更改谷歌地图我的位置默认按钮,例如浮动操作按钮?

这是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的“我的位置”按钮的功能。

我希望你们所有人都能帮助我,谢谢你们。

android android-fragments
1个回答
0
投票

假设您已成功初始化GoogleMap,您有两种选择:

  1. 使用内置方法显示用户的当前位置。您可以在GoogleMap#setMyLocationEnabled(boolean)对象上使用GoogleMap方法来显示用户的当前位置,并显示Google Maps应用程序等浮动操作按钮。
  2. 如果要在MapFragment上显示自定义UI,则需要执行一些额外步骤。 使用MapFragmentGoogleMap#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_LOCATIONACCESS_FINE_LOCATION)以获取用户的位置。从API 23开始,您可能必须明确要求用户许可。

© www.soinside.com 2019 - 2024. All rights reserved.