• Optimization
  • Navigation
  • Tracking
  • Maps
  • Places

Location Component

The Location Component in NextBillion.ai's Flutter Maps SDK allows you to leverage user location data and implement location-based functionalities in your application. To utilize this feature, you need to configure location permissions for both Android and iOS platforms.

Configuration permissions

You need to grant location permission in order to use the location component of the NB Maps Flutter Plugin, declare the permission for both platforms:

Android

Add the following permissions to the AndroidManifest.xml file:

1
2
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

iOS

The Info.plist file needs to be explicitly configured in order to ensure the seamless and transparent integration of location-based features within your iOS application.

The NSLocationWhenInUseUsageDescription and NSLocationAlwaysUsageDescription keys must be defined in your Info.plist file, which is located in the Runner folder of your Flutter project. These keys give users a clear and concise explanation of why your app requires access to their location data. This proactive approach promotes transparency and trust among your app's users.

1
2
3
4
 <key>NSLocationWhenInUseUsageDescription</key>
    <string>[Your explanation here]</string>
<key>NSLocationAlwaysUsageDescription</key>
    <string>[Your explanation here]</string>

Replace [Your explanation here] with a brief but informative description of why your app requires access to the user's location data. This description should clearly communicate the value that users will receive by granting this access.

Checking and Granting Permissions

Before using location-related functionalities in your Flutter app, check if the app has location permissions, and request permission if it has not been granted yet.

Enable Location Tracking

To enable location tracking and display the user's location on the map, you can set the following properties when creating the NBMap widget:

  • trackCameraPosition: Set to true to track the map camera's position based on the user's location.

  • myLocationEnabled: Set to true to display the user's location on the map.

  • myLocationTrackingMode: Set to MyLocationTrackingMode.Tracking to continuously update the user's location on the map as they move.

Observe User Location Updating

You can observe the user's location updates using the onUserLocationUpdated callback. Whenever the user's location is updated, this callback function will be invoked with the updated UserLocation.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
NBMap(
     onMapCreated: _onMapCreated,
     initialCameraPosition: const CameraPosition(
            target: LatLng(-33.852, 151.211),
            zoom: 14.0,
          ),
     trackCameraPosition: true,
     myLocationEnabled: true,
     myLocationTrackingMode: MyLocationTrackingMode.Tracking,
     onUserLocationUpdated: (userLocation) {
       // Handle the user’s updated location here
      },
)

In this example, the NBMap widget is configured to enable location tracking and display the user's location on the map. The onUserLocationUpdated callback is defined to receive the user's location updates and perform any necessary actions accordingly.

By implementing the Location Component, your application can effectively utilize user location data, enabling location-based features and enhancing the overall user experience.