更改按钮我的FAB位置

时间:2018-03-03 06:00:35

标签: android android-fragments

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

这是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&#34; accion_ubicacion&#34;的浮动操作按钮具有Google中我的位置按钮的功能。

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

1 个答案:

答案 0 :(得分:0)

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

  1. 使用内置方法显示用户的当前位置。您可以在GoogleMap对象上使用GoogleMap#setMyLocationEnabled(boolean)方法显示用户的当前位置,并显示Google地图应用等浮动操作按钮。

  2. 如果您想在MapFragment之上显示自定义用户界面,则需要执行一些额外步骤。

    • 使用GoogleMap#setPadding(int, int, int, int)MapFragment周围设置一些填充。这是为了确保您不会隐藏/隐藏Google的徽标和版权声明。您可以阅读更多相关信息here

    • 添加填充并准备好UI(我猜你已经完成)之后,在按钮上添加一个点击监听器并触发GoogleMap对象上的位置更新。

  3. 示例代码可能如下所示:

    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开始,您可能必须明确要求用户许可。