无法从谷歌地图和onLocationChanged方法获得准确的位置未被显着调用

时间:2018-03-13 12:29:39

标签: android google-maps

enter image description here我正在做一个应用程序,因为我必须向用户显示路径,当用户到达特定的latlng时我必须提供语音指导。那些latlng将被捕获,我必须让用户跟进它。

这里我已经在onLocationChanged方法中添加了我的登录名,其中我只是在调用onLocationChanged方法时获取当前位置,并且我将与我将从后端获得的latlng列表进行比较,如果任何latlng小于50我只会让手机通过语音指导用户,就像我们在google地图中看到的那样

这里我的问题是,在谷歌地图我无法获得地图上的确切位置,这是不准确的,当我骑自行车时,方法不会被调用,它应该告诉路线到用户

我尝试了很多类型的地图逻辑,更改的onloaction未正确调用且位置未正确更新

即使在谷歌地图上我也看到了这个问题,如果你看到谷歌地图,即使那里的位置没有准确更新,它也说是

现在我希望在我从一个地方移动到另一个地方时调用onLocationChanged方法然后我才能完成项目需求

有些时候,当我通过该特定位置时会调用onLocationChanged方法,因此在更新路径和在项目中调用onLocationChanged方法时会遇到很多问题

public void onLocationChanged(Location location) {
        distance = new ArrayList<>();
        location.setAccuracy(1f);
        if (mActivity.mMap != null) {
            mActivity.mMap.setMyLocationEnabled(true);
        }
       /* if (mActivity.mMap != null) {
            Location loc = mActivity.mMap.getMyLocation();
            double lat = loc.getLatitude();
            double lng = loc.getLongitude();
        }*/
        latitude = location.getLatitude();
        longitude = location.getLongitude();

        LatLng currentLatLang = new LatLng(latitude, longitude);
//        mActivity.mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLatLang));
//        if (mActivity.isZoom) {
//            mActivity.isZoom = false;
        if (mActivity.mMap != null) {
            mActivity.mMap.animateCamera(CameraUpdateFactory.newLatLng(currentLatLang));
        }
//        }
//        mActivity.mMap.addMarker(new MarkerOptions().position(currentLatLang));

        for (int i = 0; i < mActivity.routeDirection.size(); i++) {

//            Location currentLocation = new Location(location);
           /* currentLocation.setLatitude(latitude);
            currentLocation.setLongitude(longitude);*/

            Location temp = new Location(LocationManager.NETWORK_PROVIDER);
            temp.setLatitude(Double.parseDouble(mActivity.routeDirection.get(i).getRouteArray().getLat()));
            temp.setLongitude(Double.parseDouble(mActivity.routeDirection.get(i).getRouteArray().getLng()));


            double threshHold = 23.0; // meters

            double curAndTempDistance = location.distanceTo(temp);
            distance.add((float) curAndTempDistance);
            mActivity.mCommentText.setText(distance.get(0) + "");

            if (curAndTempDistance < threshHold) {
                if (mActivity.isFromStartPoint) {
                    msg = mActivity.routeDirection.get(i).getStartToEndCommand();
                } else {
                    msg = mActivity.routeDirection.get(i).getEndToStartCommand();
                }
                mActivity.mCommentText.setText(msg + " " + curAndTempDistance);
                if (i != mActivity.previousInstruction) {
                    tts.speak(msg, TextToSpeech.QUEUE_ADD, null);
                }
                mActivity.previousInstruction = i;
                break;
            } else {
                if (i == mActivity.previousInstruction) {
                    if (mActivity.isFromStartPoint && mActivity.routeDirection.size() == mActivity.previousInstruction) {
                        mActivity.previousInstruction = -1;
                        mActivity.isFromStartPoint = false;
                        // Rate this app

                    } else if (!mActivity.isFromStartPoint && mActivity.previousInstruction == 0) {
                        mActivity.previousInstruction = -1;
                        mActivity.isFromStartPoint = true;
                        //Rate this app

                    }
                }
            }


        }



mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0.1f, listener);

这就是我如何使用我的服务类和从活动中调用方法。我可以为这个问题找到解决方案

提前谢谢

0 个答案:

没有答案