Native Mobile App Development With Java

Search location Android

23-Sep-2025

Search location Android


1/ These permissions allow the app to access device location (fine, coarse, background) and use the internet. The meta-data stores the Google Maps API key needed to load maps.


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

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



2/ This layout uses a RelativeLayout with an EditText at the top for entering a location and a SupportMapFragment below it to display the Google Map.


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent">


<EditText
android:id="@+id/searchLocation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter location"
android:padding="10dp"/>


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




3/  This activity displays a Google Map, allows users to search for locations, and shows markers on the map.


package com.example.map;

import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

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 java.io.IOException;
import java.util.List;
import java.util.Locale;

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap map;
private EditText searchBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
searchBox = findViewById(R.id.searchLocation);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
searchBox.setOnEditorActionListener((v, actionId, event) -> {
String location = searchBox.getText().toString();
if (!location.isEmpty()) {
searchLocation(location);
}
return true;
});
}
private void searchLocation(String location) {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresess = geocoder.getFromLocationName(location,1);
if (addresess != null && !addresess.isEmpty()){
Address address = addresess.get(0);
LatLng latLng = new LatLng(address.getLatitude(),address.getLongitude());
map.addMarker(new MarkerOptions().position(latLng).title(location));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 12));
} else{
Toast.makeText(this, "Location not found", Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
map = googleMap;
LatLng cumilla = new LatLng(23.4603,91.1909);
MarkerOptions markerOptions = new MarkerOptions().position(cumilla)
.title("Cumilla");
map.addMarker(markerOptions);
map.moveCamera(CameraUpdateFactory.newLatLng(cumilla));
map.animateCamera(CameraUpdateFactory.newLatLngZoom(cumilla,16f));
}
}



Comments