1

我在我的应用程序中使用华为地图套件,我正在按照他们文档中提到的步骤进行操作。地图加载并且每次都将我移动到象牙海岸。我不明白为什么

我的代码

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));

    }

我在同一个应用程序中使用谷歌地图(对于使用 gms 的手机)并使用几乎相同的方法,并且在谷歌地图上一切正常..请帮助

4

2 回答 2

3

问题一:

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类用于通过动画移动相机。您可以使用任一类来移动相机。

于 2020-09-15T08:51:57.950 回答
0

您可以使用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. 使用自定义标记和自定义信息窗口自定义地图 - 地图套件
  2. 驾驶、骑车和步行的绘制路线示例 - 地图套件
于 2020-09-15T04:22:43.450 回答