• 0

تحديد إحداثيات الموقع الحالي لي

السلام عليكم ورحمة الله وبركاته

اريد الحصول على احداثياتي لكن انا احصل عليها فقط عندما افتح google map ولو مافتحته القيمة تكون null ماهي المشكلة

هاذا الكود المستخدم

client = LocationServices.getFusedLocationProviderClient(this);

            
            Task<Location> task = client.getLastLocation();

            task.addOnSuccessListener(new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(final Location location) {

                    if (location != null) {
                      
                      double x=location.getLongitude();
                      double y=location.getLatitude();
                 
                    }

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

السلام عليكم @Amir Aoucha

يمكنك الحصول على إحداثيات موقعك هكذا بطريقة عامة 

Location currentLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);

بالتفصيل نقوم بتعريف المتغيرات التالية ونقوم بعمل اوبجيكت من GoogleApiClient 

  private GoogleMap mMap;
    private double longitude;
    private double latitude;
    private GoogleApiClient googleApiClient;

الأن في ال onCreate ميثود (لا تنسى إضافة map view في الlayout) 

 
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        //Initializing googleApiClient
        googleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();

والأن تأكد من الصلاحيات  ,ونقوم بالحصول على الإحداثيات 

 private void getCurrentLocation() {
        mMap.clear();
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
           
            return;
        }
        Location location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
        if (location != null) {
            //Getting longitude and latitude
            longitude = location.getLongitude();
            latitude = location.getLatitude();

            //moving the map to location
            moveMap();
        }
    }

    private void moveMap() {
        /**

         * 
         * move the camera with animation
         */
        LatLng latLng = new LatLng(latitude, longitude);
        mMap.addMarker(new MarkerOptions()
                .position(latLng)
                .draggable(true)
                .title("Marker in Country"));

        mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
        mMap.getUiSettings().setZoomControlsEnabled(true);


    }

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن