BCA / B.Tech 17 min read

Location and Maps Services< in Hindi

Location और Maps Services

1: Maps दिखाना (Displaying Maps)

Android applications में maps integrate करने के लिए Google Maps Platform का उपयोग किया जाता है। `Google Maps Android API` आपको अपनी app में interactive maps embed करने की सुविधा देता है।

Maps Integrate करने के मुख्य Steps:

  1. API Key प्राप्त करें: Google Cloud Console पर जाएं, एक project बनाएं, "Maps SDK for Android" को enable करें, और एक API key generate करें।
  2. Dependencies Add करें: अपने `build.gradle` file में Google Play services for maps की dependency add करें।
  3. API Key Add करें: अपनी API key को `AndroidManifest.xml` file में add करें।
  4. Permissions Add करें: `AndroidManifest.xml` में location permissions add करें।
  5. MapFragment Add करें: अपने XML layout में map दिखाने के लिए `SupportMapFragment` add करें।
  6. Map को Initialize करें: अपनी activity में `getMapAsync()` method का उपयोग करके map object प्राप्त करें।
[Image of Google Maps integrated into an Android app]

Java में उदाहरण:

Step 1: AndroidManifest.xml में API Key और Permissions


<manifest ...>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application ...>
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="YOUR_API_KEY_HERE" />
        ...
    </application>
</manifest>

Step 2: XML Layout में MapFragment


<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Step 3: Activity में Map को Control करना


public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        
        // MapFragment प्राप्त करें और map ready होने पर notify हों
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    // यह callback तब trigger होता है जब map उपयोग के लिए तैयार हो
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Bhilwara, Rajasthan के लिए LatLng object बनाएं और एक marker add करें
        LatLng bhilwara = new LatLng(25.3485, 74.6373);
        mMap.addMarker(new MarkerOptions().position(bhilwara).title("Marker in Bhilwara"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(bhilwara, 12)); // Zoom level 12
    }
}

2: Location Data प्राप्त करना और Monitor करना

Users की current location प्राप्त करना कई apps के लिए एक महत्वपूर्ण feature है। Android में location data प्राप्त करने के लिए `FusedLocationProviderClient` का उपयोग किया जाता है।

Location प्राप्त करने के Steps:

  1. Permissions Check करें: `ACCESS_FINE_LOCATION` की permission check करें और यदि आवश्यक हो तो user से request करें (runtime permission)।
  2. FusedLocationProviderClient का Instance प्राप्त करें: Location services के साथ interact करने के लिए इसका object बनाएं।
  3. Last Known Location प्राप्त करें: Device की last cached location को quickly प्राप्त करें।

Java में Last Known Location प्राप्त करने का उदाहरण:


public class LocationActivity extends AppCompatActivity {

    private FusedLocationProviderClient fusedLocationClient;
    private TextView locationTextView;
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);

        locationTextView = findViewById(R.id.location_tv);
        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

        checkLocationPermission();
    }

    private void checkLocationPermission() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            // Permission नहीं है, request करें
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    LOCATION_PERMISSION_REQUEST_CODE);
        } else {
            // Permission पहले से ही है, location प्राप्त करें
            getLastLocation();
        }
    }

    private void getLastLocation() {
        // Permission check करना अनिवार्य है
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            fusedLocationClient.getLastLocation()
                .addOnSuccessListener(this, new OnSuccessListener() {
                    @Override
                    public void onSuccess(Location location) {
                        // Location प्राप्त हो गई
                        if (location != null) {
                            String locationText = "Latitude: " + location.getLatitude() + 
                                                  "
Longitude: " + location.getLongitude();
                            locationTextView.setText(locationText);
                        } else {
                            locationTextView.setText("Location not available.");
                        }
                    }
                });
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission मिल गई
                getLastLocation();
            } else {
                Toast.makeText(this, "Location permission is required!", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

Location को Monitor करना: Continuous location updates के लिए, आप `requestLocationUpdates()` method का उपयोग कर सकते हैं, जो एक specific interval पर location data deliver करता है।