【问题标题】:How to get user's current location and location updates on Yandex MapKit 3.4.0如何在 Yandex MapKit 3.4.0 上获取用户的当前位置和位置更新
【发布时间】:2019-08-14 10:06:58
【问题描述】:

我在我的应用程序中使用 Yandex MapKit。目前我需要获取用户当前位置并在该位置设置动画相机。问题是文档真的很差,互联网上的大多数答案似乎在最新版本的地图上已被弃用。如何获取当前位置和位置更新?

【问题讨论】:

标签: android yandex yandex-mapkit


【解决方案1】:

我找到了一个简单的解决方案。地图套件 3.0.4 似乎更新了它的 api 方法。

        MapKit mapKit = MapKitFactory.getInstance();

    mapKit.createLocationManager().requestSingleUpdate(new LocationListener() {
        @Override
        public void onLocationUpdated(@NonNull Location location) {
            Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLongitude());
            Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLatitude());
            mapView.getMap().move(
                    new CameraPosition(location.getPosition(), 14.0f, 0.0f, 0.0f),
                    new Animation(Animation.Type.SMOOTH, 1),
                    null);

        }

        @Override
        public void onLocationStatusUpdated(@NonNull LocationStatus locationStatus) {

        }
    });

此代码将触发设备定位。

不要忘记在 setContentview 或在片段中返回视图之前包含 MapKitFactory.setApiKey(MAPKIT_API_KEY);MapKitFactory.initialize(this);

【讨论】:

    【解决方案2】:

    首先你需要获得位置许可!!!

    var fusedLocationClient =LocationServices.getFusedLocationProviderClient(this@MapActivity)
    
    fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
    
        Log.d(TAG, "getUserLocation:  $location.latitude")
    
        Log.d(TAG, "getUserLocation:  $location.longitude")
    
        }
    }
    

    【讨论】:

    • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    • 使用帖子下方的edit 链接添加更多信息,而不是添加到 cmets 中
    【解决方案3】:

    上面提供的答案不正确,它只允许您找出位置一次。您需要使用不同的代码

    mapKit = MapKitFactory.getInstance();
    mapKit.createLocationManager().subscribeForLocationUpdates(0,0, 0, true, FilteringMode.ON, new LocationListener() {
            @Override
            public void onLocationUpdated(@NonNull Location location) {
                Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLongitude());
                Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLatitude());
            }
    
            @Override
            public void onLocationStatusUpdated(@NonNull LocationStatus locationStatus) {
            }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多