اذهب إلى المحتوى

السؤال

نشر

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

اريد الحصول على احداثياتي لكن انا احصل عليها فقط عندما افتح 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();
                 
                    }

 

Recommended Posts

  • 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);


    }

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...