【问题标题】:HereMap PositioningListener Was Never Called这里从未调用过地图定位侦听器
【发布时间】:2020-01-23 17:11:00
【问题描述】:

我是 HereMap 的新手。我花了一些时间,但我仍然看不出这有什么问题。我用以下代码初始化了 HereMap。

    MapFragment gmMapFragment = ...

    gmMapFragment.init(Common.main_activity, new OnEngineInitListener() {
        @Override
        public void onEngineInitializationCompleted(OnEngineInitListener.Error error) {
            if (error == OnEngineInitListener.Error.NONE) {

                gmMapFragment.getMapGesture().addOnGestureListener(gestureListener);

                gmMap = gmMapFragment.getMap();

                // Set the map center to the Vancouver region (no animation)
                gmMap.setCenter(new GeoCoordinate(tw.latitude, tw.longitude, 0.0),
                    Map.Animation.NONE);
                // Set the zoom level to the average between min and max
                gmMap.setZoomLevel((gmMap.getMaxZoomLevel() + gmMap.getMinZoomLevel()) / 2);

                gmMap.setProjectionMode(Map.Projection.MERCATOR);

                gmMap.getPositionIndicator().setVisible(true);

                gmPositioningManager = PositioningManager.getInstance();
                gmPositioningManager.addListener(new WeakReference<>(positionListener));

                gmPositioningManager.start(PositioningManager.LocationMethod.GPS_NETWORK);

            } else {
                System.out.println("ERROR: Cannot initialize Map Fragment,"
                    + error.name() + "," + error.getDetails() + "," +error.getStackTrace());
            }
        }
    });    

我的 positionListener 声明如下:

private PositioningManager.OnPositionChangedListener positionListener = new
    PositioningManager.OnPositionChangedListener() {

    public void onPositionUpdated(PositioningManager.LocationMethod method,
                                  GeoPosition position, boolean isMapMatched) {

        // set the center only when the app is in the foreground
        // to reduce CPU consumption
        if (!paused) {
            gmGeoCoordinate = position.getCoordinate();
        }
    }

我很确定地图已经初始化成功了,gmMapFragment.init(..),因为我可以在屏幕上看到地图。如果我使用从谷歌地图工具获得的坐标,我什至可以在此处的地图上绘制路线。但我确实需要这里的地图来为我获取当前位置,因为我们需要逐个进行 3D。

onPositionUpdated(...) 从未被调用。我需要做任何其他事情才能让它工作吗?我认为将侦听器添加到 PositionManager 就足够了。

【问题讨论】:

  • 试试 - gmPositioningManager.addListener(new WeakReference&lt;PositioningManager.OnPositionChangedListener&gt;(positionListener));
  • 您可以尝试收听“OnPositionChangedListener#onPositionFixChanged(LocationMethod 方法,LocationStatus 状态)”来查看是否有修复。另外,您可以检查'gmPositioningManager.start'的返回值,如果有问题,它可以返回false。您也可以使用“getLocationStatus(LocationMethod 方法)”手动检查“LocationStatus”。此页面可能对您有所帮助:Basic Positioning

标签: android here-api


【解决方案1】:

总结:你可以试试听'OnPositionChangedListener#onPositionFixChanged(LocationMethod method, LocationStatus status)'看看你有没有修复。另外,您可以检查'gmPositioningManager.start'的返回值,如果有问题,它可以返回false。您也可以使用“getLocationStatus(LocationMethod 方法)”手动检查“LocationStatus”。此页面可能对您有所帮助:Basic Positioning

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2012-04-30
    • 2012-08-10
    • 2019-09-01
    • 2022-08-03
    • 2019-07-25
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多