gpt4 book ai didi

android - 在 Google map fragment 中重新定位 MyLocation 按钮

转载 作者:行者123 更新时间:2023-12-04 23:46:37 32 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Change position of Google Maps API's "My location" button

(17 个回答)


4年前关闭。




在 Android 版 Google Maps API 中,右上角有一个按钮,用于在 map 内定位您。

我想知道是否可以重新定位默认情况下在 Google Maps for Android 的 API 中的这个图标,因为我计划在顶部添加一个 EditText,就好像它是 float 的一样。

enter image description here

最佳答案

我可以建议 2 个选项。
但是,我强烈建议您使用第一个 - 更加经典和简单:

  • 使用Map Padding (推荐)

  • 您可以通过设置 Padding 重新定位任何 GoogleMap 控件。从角落。在你的情况下,我会从顶部设置一些填充:
    googleMap.setPadding(0, numTop, 0, 0); //numTop = padding of your choice
    它还会相应地更改 map 相机的中心位置,这对于这种用例(添加标题/其他 float 控件)非常有用。

  • 禁用按钮并创建一个您自己的 (不推荐)

  • 禁用它很容易:
    googleMap.getUiSettings().setMyLocationButtonEnabled(false)

    然而,创建一个新的会比较棘手——主要是因为很难设置一个功能齐全的。
  • 我会创建 FloatingActionButton 这看起来像 Google map 应用程序上的那个 (example)。
  • 您可以从 here 获取图标(称为“我的位置”)
  • Material Grey 300 中为 Fab 着色(大概400,暂时记不住)
  • 定义 点击事件 这会将相机移动到用户的当前位置(为此,您将不得不使用 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.onCameraMovegoogleMap.onCameraIdle , 并为您的应用程序编写代码,以便每当相机空闲时, map 将继续跟随用户,而每当用户移动相机时, map 就会停止。
    onCameraIdle 的 sample :
    //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
  • 关于android - 在 Google map fragment 中重新定位 MyLocation 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970562/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com