I am making an app with a bottom navigation view, on my home page i am using a map fragment to show my location with a blue circle of 2 km around it. i want to use a placepicker inside my activity so that whenever i change my location on placepicker the blue circle should also move to same location what i have done so far is this.
public class MainActivity extends AppCompatActivity {
LatLng myPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.changeLocation);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPlacePicker();
}
});
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
OpeningPage2 fragment = new OpeningPage2();
Bundle bundle = new Bundle();
bundle.putString("KEY_LAT", String.valueOf(myPosition.latitude));
bundle.putString("KEY_LNG", String.valueOf(myPosition.longitude));
fragment.setArguments(bundle);
ft.replace(R.id.content,fragment);
ft.commit();
}
private void showPlacePicker() {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
} catch (Exception e) {
Log.e(TAG, e.getStackTrace().toString());
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(data,
getApplicationContext());
StringBuilder stBuilder = new StringBuilder();
Double latitude1 = Double.valueOf(place.getLatLng().latitude);
Double longitude1 = Double.valueOf(place.getLatLng().longitude);
myPosition = new LatLng(latitude1, longitude1);
}
}
}
}
Code Inside Fragment
double lat,lng;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String latitude, longitude;
latitude = getArguments().getString("KEY_LAT");
longitude = getArguments().getString("KEY_LNG");
lat = Double.valueOf(latitude);
lng= Double.valueOf(longitude);
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SupportMapFragment mapFragment = (SupportMapFragment)
getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
public void onMapReady(final GoogleMap googleMap) {
mMap = googleMap;
mUiSettings = mMap.getUiSettings();
mUiSettings.setZoomControlsEnabled(true);
mUiSettings.setCompassEnabled(true);
mUiSettings.setMyLocationButtonEnabled(true);
myPosition = new LatLng(lat, lng);
mMap.addCircle(new CircleOptions()
.center(myPosition)
.radius(2000)
.strokeColor(Color.BLACK)
.fillColor(0x220000FF)
.strokeWidth(1)
);
mMap.moveCamera(CameraUpdateFactory.newLatLng(myPosition));
}
You can add circle when you get pace fro placePicker as -