почему отметка местоположения для других устройств не отображается в папке - PullRequest
0 голосов
/ 13 октября 2019

эй, я только новичок с точки зрения Android. Я попытался найти местоположение другого устройства и показал его на карте, прежде чем сохранить широту и продольное расстояние до Firebase. но когда я открываю карты, появляются только мое местоположение. Другие местоположения устройств не отображаются, в чем решение?

кнопка для ввода текущего пользователя lat lng

            @Override
            public void onClick(View v) {

                fused.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
                    @Override
                    public void onSuccess(Location location) {
                        lat.setText(String.valueOf(location.getLatitude()));
                        lont.setText(String.valueOf(location.getLongitude()));

                        String email = FirebaseAuth.getInstance().getCurrentUser().getEmail();
                        Intent map = new Intent(MainActivity.this, trackingMaps.class);
                        map.putExtra("email", email);
                        map.putExtra("lat", location.getLatitude());
                        map.putExtra("lnt", location.getLongitude());
                        startActivity(map);
                    }
                });
            }
        });

это код для получения lat и lng. и сохраните в firebase

        fused.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                lat.setText(String.valueOf(location.getLatitude()));
                lont.setText(String.valueOf(location.getLongitude()));

                String latnya = lat.getText().toString().trim();
                String lntnya = lont.getText().toString().trim();
                String email = FirebaseAuth.getInstance().getCurrentUser().getEmail();
                String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

                tracking track = new tracking(email, lntnya, latnya, uid);
                locationsDatabase.child("locations").setValue(track);

            }
        });
    }

класс привязки


    String email;
    String lng;
    String lat;
    String uid;

    public tracking () {

    }

    public tracking(String email, String lng, String lat, String uid) {
        this.email = email;
        this.lng = lng;
        this.lat = lat;
        this.uid = uid;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setLng(String lng) {
        this.lng = lng;
    }

    public void setLat(String lat) {
        this.lat = lat;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getEmail() {
        return email;
    }

    public String getLng() {
        return lng;
    }

    public String getLat() {
        return lat;
    }

    public String getUid() {
        return uid;
    }
}

и это код для карты. и добавьте маркер

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tracking_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        firebaseAuth = FirebaseAuth.getInstance();
        firebaseUser = firebaseAuth.getCurrentUser();
        locationDatabase = FirebaseDatabase.getInstance().getReference(firebaseUser.getUid()).child("locations").child("email");

        if (getIntent() != null) {
            email = getIntent().getStringExtra("email");
            lat = getIntent().getDoubleExtra("lat", 0);
            lnt = getIntent().getDoubleExtra("lnt", 0);
        }

        if (!TextUtils.isEmpty(email)) {
            loadLocationForThisUser();
        }
    }

    private void loadLocationForThisUser() {
        Query userLocation = locationDatabase.orderByChild("email").equalTo(email);

        userLocation.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot posSnapshot:dataSnapshot.getChildren()) {
                    tracking track = posSnapshot.getValue(tracking.class);

                    //add marker friend location
                    LatLng friendLocation = new LatLng(Double.parseDouble(track.getLat()),
                            Double.parseDouble(track.getLng()));

                    //create location from user coordinater
                    Location curent = new Location("");
                    curent.setLatitude(lat);
                    curent.setLongitude(lnt);

                    //create location from friend coordiates
                    Location friend = new Location("");
                    friend.setLatitude(Double.parseDouble(track.getLat()));
                    friend.setLongitude(Double.parseDouble(track.getLng()));

                    //clear all old marks
                    mMap.clear();

                    //create function calculete distance between location (fungsi meghitung jarak)
                    distance(curent, friend);

                    //add friend marker in map
                    mMap.addMarker(new MarkerOptions().position(friendLocation).title(track.getEmail())
                    .snippet("Distance" + new DecimalFormat("#.#").format(distance(curent, friend)))
                    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lnt), 12.0f));
              }

                //create marker for user
                LatLng currentlatlng = new LatLng(lat, lnt);
                mMap.addMarker(new MarkerOptions().position(currentlatlng).title(FirebaseAuth.getInstance().getCurrentUser()
                .getEmail()));
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lnt), 12.0f));
            }

ошибки не появляются, но отмечают местоположение других устройств, не появляющихся. что нужно исправить? Я очень надеюсь, что вы, ребята, поможете мне. спасибо!

...