【问题标题】:Resolve missing permissions require by GoogleMaps.setMyLocationEnalbled解决 GoogleMap.setMyLocationEnabled 所需的权限缺失问题
【发布时间】:2018-03-16 03:46:03
【问题描述】:

我正在使用 Google 地图在 Fragment 中显示我的 Office 位置。当我编译并运行应用程序时,它会显示地图但不会标记我的位置。

在片段 java 文件上,map.setMyLocationEnabled(true);

被红色下划线了,不知道怎么解决。

下面是我在 Fragment maps 中的代码。

public class maps extends Fragment implements OnMapReadyCallback {

    private Context mContext;
    private SupportMapFragment supportMapFragment;
    private GoogleMap map;
    private MarkerOptions currentPositionMarker = null;
    private Marker currentLocationMarker;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mContext = getActivity();
        return inflater.inflate(R.layout.fragment_maps, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        mContext = getActivity();

        FragmentManager fm = getActivity().getSupportFragmentManager();/// getChildFragmentManager();
        supportMapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container);
        if (supportMapFragment == null) {
            supportMapFragment = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.map_container, supportMapFragment).commit();
        }
        supportMapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;
        if (ActivityCompat.checkSelfPermission(mContext, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(mContext, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        map.setMyLocationEnabled(true);
        map.animateCamera(CameraUpdateFactory.zoomTo(15));
        /*map.setOnMapLongClickListener(MapyFragment.this);
        map.setOnMapClickListener(MapFragment.this);*/
    }

    public void updateCurrentLocationMarker(Location currentLatLng){

        if(map != null){

            LatLng latLng = new LatLng(currentLatLng.getLatitude(),currentLatLng.getLongitude());
            if(currentPositionMarker == null){
                currentPositionMarker = new MarkerOptions();

                currentPositionMarker.position(latLng)
                        .title("My Location").
                        icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_facebook_3));
                currentLocationMarker = map.addMarker(currentPositionMarker);
            }

            if(currentLocationMarker != null)
                currentLocationMarker.setPosition(latLng);

            ///currentPositionMarker.position(latLng);
            map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        }
    }
}

提前致谢。

【问题讨论】:

  • 如果您不想显示您的位置,只需删除 map.setMyLocationEnabled。使用记号笔标记您的办公地点
  • 在线发布代码或与第三方共享时,请确保不要将密钥与代码一起发布。您已将 google maps api 密钥与清单文件一起发布

标签: android google-maps android-fragments google-maps-api-3


【解决方案1】:

对于当前位置,您可以通过在 google 官方文档下方找到的适当示例找到最佳解决方案。你自己试试吧,它会探索你的。

https://developers.google.com/maps/documentation/android-api/current-places-tutorial?hl=pt-br

【讨论】:

  • 我不想显示当前位置。相反,我想显示我的办公室位置并标记它..
  • 你指定了map.setMyLocationEnabled(true);,所以我建议你关于当前位置,对于你的办公室位置,你需要指定你的办公室经纬度。
  • 指定 lat-long 后,您可以在特定的 lat-long 上移动地图相机。
猜你喜欢
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2011-10-13
  • 2013-07-28
  • 2020-10-13
相关资源
最近更新 更多