Камера Huawei HMS map kit не будет перемещаться / анимироваться в заданное положение

#android #google-maps #kotlin #huawei-mobile-services #huawei-map-kit

#Android #google-карты #kotlin #huawei-мобильные сервисы #huawei-map-kit

Вопрос:

я использую huawei map kit в своем приложении, я следую инструкциям, упомянутым в их документации..карта загружается и каждый раз просто перемещает меня в Кот-д’Ивуар .. я не понимаю, почему

мой код

 private HuaweiMap hMap;
    private MapView mMapView;
    double lat;
    double lng;



    private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        Log.i("TAG", "onCreate");
          Intent i=getIntent();
          double lat=i.getExtras().getDouble("lat");
          double lng=i.getExtras().getDouble("lng");


        mMapView = findViewById(R.id.mapView);

        Bundle mapViewBundle = null;
        if (savedInstanceState != null) {
            mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
        }

        MapsInitializer.setApiKey("the api key");
        mMapView.onCreate(mapViewBundle);
        //get map instance
        mMapView.getMapAsync(this);


    }

@Override
    public void onMapReady(HuaweiMap map) {

            //get map instance in a callback method
            Log.d("TAG", "onMapReady: ");
            hMap = map;
            hMap.getUiSettings().setZoomControlsEnabled(true);
            hMap.getUiSettings().setZoomGesturesEnabled(true);
            hMap.getUiSettings().setMyLocationButtonEnabled(true); //this button doesn't show on screen either

            LatLng location = new LatLng(lat, lng);
            hMap.addMarker(new MarkerOptions().position(location));
            CameraPosition cameraPosition = new CameraPosition(location,8,2.2f,31.5f);
            hMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
            hMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

    }

  

я использую карты Google в том же приложении (для телефонов, использующих gms) и использую почти тот же подход, и все отлично работает с картой Google..
пожалуйста, помогите

Комментарии:

1. Возможно, вы захотите взглянуть на это: github.com/franalma/MapsWrapper

Ответ №1:

Вопрос 1:

hMap.getUiSettings().setMyLocationButtonEnabled(true) не вступает в силу.

Прежде чем использовать hMap.getUiSettings().setMyLocationButtonEnabled(true), вам необходимо использовать hMap.setMyLocationEnabled(true), чтобы включить функцию определения местоположения на карте.

  • Функция hMap.setMyLocationEnabled(true): определяет, следует ли использовать функцию определения местоположения на карте. (Значение по умолчанию — false.)
  • Функция hMap.getUiSettings().setMyLocationButtonEnabled(true): устанавливает, отображать ли значок моего местоположения на карте. (Значение по умолчанию — true.)

Если для setMyLocationEnabled установлено значение false, значок моего местоположения отображаться не будет, а функция определения местоположения недоступна, независимо от того, установлен ли setMyLocationButtonEnabled. Поэтому рекомендуется использовать hMap.setMyLocationEnabled(true) для отображения значка моего местоположения.

Для получения дополнительной информации, пожалуйста, обратитесь к документам.

Вопрос 2:

Камера карты всегда перемещается в Кот-д’Ивуар.

Ваше использование правильное. Рекомендуется распечатать соответствующие долготы и широты, чтобы увидеть, остаются ли они неизменными.

Кроме того, класс moveCamera используется для непосредственного перемещения камеры, а класс animateCamera используется для перемещения камеры с помощью анимации. Вы можете использовать любой из классов для перемещения камеры.

Ответ №2:

Вы можете использовать animateCamera(), используя этот метод, мы можем анимировать перемещение камеры из текущего положения в положение, которое мы определили.

 CameraPosition build = new CameraPosition.Builder()
     .target(new LatLng(location.lat, location.lng))
     .zoom(15)
     .bearing(90)
     .tilt(30)
     .build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(build);
hMap.animateCamera(cameraUpdate);
  

Чтобы узнать больше о картах, посетите статьи

  1. Для настройки карт с помощью пользовательского маркера и пользовательского информационного окна — Maps Kit
  2. Пример рисования указаний для вождения, езды на велосипеде и ходьбы — Maps Kit