Basic Map Implementation
First go to google Developer.console
Create Account in Google Developer Console
go to credential page
Must Enable Google Api MAp Sdk V2
_resources
string name="app_name">fullMapImplementation_string
string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyC8nSMlNXgjVUxx1yz9I2Avba--dm5CeZ8_?string_
_?resources_
Do this in Menifest
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:name="android.permission.INTERNET"
android:name="android.permission.ACCESS_NETWORK_STATE"
_meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" ?_
package in.akash.vibrant.it.fullmapimplementation;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.location.Location;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap gMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(MainActivity.this);
}
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
gMap=googleMap;
LatLng myPos = new LatLng(29.3934217, 78.16364);
gMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
gMap.moveCamera(CameraUpdateFactory.newLatLng(myPos));
}
}
Live Location Andress Animate Camera Code
Gradle Dependency
implementation 'com.google.android.gms:play-services-maps:18.1.0'
implementation 'com.karumi:dexter:6.2.3'
implementation 'com.google.android.gms:play-services-location:17.0.0'
Manifest Api key
meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key"
in Res Folder String Write this
resources
string name="app_name">fullMapImplementation string
string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyC8nSMlNXgjVUxx1yz9I2Avba--dm5CeZ8 string
resources
package in.akash.vibrant.it.fullmapimplementation;
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import java.io.IOException;
import java.util.List;
public class MainActivity extends AppCompatActivity {
SupportMapFragment mapFragment;
FusedLocationProviderClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
client= LocationServices.getFusedLocationProviderClient(this);
// mapFragment.getMapAsync(MainActivity.this);
Dexter.withContext(this)
.withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse response) {
getMyLocation();
}
@Override
public void onPermissionDenied(PermissionDeniedResponse response) {
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
}
private void getMyLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {}
Task _Location_ task = client.getLastLocation(); // _ angular Braces // Please Enable Two permission in Menifest Unless Show Error
task.addOnSuccessListener(new OnSuccessListener _Location_ () { // List hai
@Override
public void onSuccess(Location location) {
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title("You Are Here");
googleMap.addMarker(markerOptions);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
String currentAddress = getAddressFromLocation(location);
if (!currentAddress.isEmpty()) {
TextView txt1=findViewById(R.id.txt1);
txt1.setText(currentAddress);
// Use the currentAddress variable as needed
Log.d("Address", currentAddress);
}
}
});
}
});
}
private String getAddressFromLocation(Location location) {
Geocoder geocoder = new Geocoder(this);
List _Address_ addresses;
String addressText = "";
try {
addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (!addresses.isEmpty()) {
Address address = addresses.get(0);
addressText = address.getAddressLine(0); // You can customize this to get more address details if needed.
}
} catch (IOException e) {
e.printStackTrace();
}
return addressText;
}
/* @Override
public void onMapReady(@NonNull GoogleMap googleMap) {
gMap = googleMap;
LatLng myPos = new LatLng(29.3934217, 78.16364);
gMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
gMap.moveCamera(CameraUpdateFactory.newLatLng(myPos));
}*/
}
For Setting The Button in Map and Polygon
private void getMyLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
}
Task task = client.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener _Location_() { // List Hai
@Override
public void onSuccess(Location location) {
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title("You Are Here");
googleMap.addMarker(markerOptions);
googleMap.setBuildingsEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true); // For setting The Current Location Button in Map
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
googleMap.setMyLocationEnabled(true);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
PolygonOptions polygonOptions = new PolygonOptions()
.add(new LatLng(latLng.latitude + 0.01, latLng.longitude + 0.01),
new LatLng(latLng.latitude - 0.01, latLng.longitude + 0.01),
new LatLng(latLng.latitude - 0.01, latLng.longitude - 0.01),
new LatLng(latLng.latitude + 0.01, latLng.longitude - 0.01))
.strokeColor(Color.parseColor("#000000")) // Stroke color
.strokeWidth(2) // Stroke width
.fillColor(Color.parseColor("#6AFBED6A")); // Fill color (yellow)
// Add the polygon to the map
googleMap.addPolygon(polygonOptions);
String currentAddress = getAddressFromLocation(location);
if (!currentAddress.isEmpty()) {
TextView txt1=findViewById(R.id.txt1);
txt1.setText(currentAddress);
// Use the currentAddress variable as needed
Log.d("Address", currentAddress);
}
// addStaticPolygon(googleMap);
}
});
}
});
}
For Location Updates in Every Seconds
call this in map
private Timer locationTimer;
private void startLocationUpdates() {
locationTimer = new Timer();
locationTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Your code to capture and print the current location
getCurrentLocation();
}
}, 0, 1000); // Capture and print location every 1000 milliseconds (1 second)
}
private void getCurrentLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Handle permissions here.
return;
}
Task _Location_ task = client.getLastLocation(); // _ Equal to list
task.addOnSuccessListener(new OnSuccessListener_Location_() { // _ List Hai
@Override
public void onSuccess(Location location) {
if (location != null) {
// Print the current location to the console
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Log.d("Location", "Latitude: " + latitude + ", Longitude: " + longitude);
}
}
});
}