Так что я использую автозаполнение места для своего приложения. Но есть 2 проблемы:
Панель поиска мест всегда теряет фокус, что делает невозможным набор текста
Карта моего приложения не отображается вверх, но если я удаляю автозаполнение, я появлюсь
Вот мои коды:
package com.tungvuong.bandocovid;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
import com.google.android.gms.location.places.ui.PlaceSelectionListener;
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.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback, LocationListener,GoogleMap.OnMarkerClickListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
public static final int ROUND = 10;
private GoogleMap mMap;
public GoogleApiClient googleApiClient;
private ChildEventListener mChildEventListener;
private DatabaseReference mUsers;
Marker marker;
public FusedLocationProviderClient fusedLocationProviderClient;
PlaceAutocompleteFragment placeAutoComplete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
ChildEventListener mChildEventListener;
mUsers= FirebaseDatabase.getInstance().getReference("coordinates");
mUsers.push().setValue(marker);
placeAutoComplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete);
placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
Log.d("Maps", "Place selected: " + place.getName());
}
@Override
public void onError(Status status) {
Log.d("Maps", "An error occurred: " + status);
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
try {
boolean success = googleMap.setMapStyle(
MapStyleOptions.loadRawResourceStyle(this, R.raw.google_style));
if (!success) {
// Handle map style load failure
Log.e("map_style","map style updated please do check it");
}
} catch (Resources.NotFoundException e) {
// Oops, looks like the map style resource couldn't be found!
Log.e("map_style","map is not updated yet ... do some other stuff");
}
mMap = googleMap;
googleMap.setOnMarkerClickListener(this);
googleMap.setMapType(R.raw.google_style);
//setting the size of marker in map by using Bitmap Class
int height = 80;
int width = 80;
BitmapDrawable bitmapdraw=(BitmapDrawable)getResources().getDrawable(R.drawable.marker);
Bitmap b=bitmapdraw.getBitmap();
final Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
mUsers.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot s : dataSnapshot.getChildren()){
UserInformation user = s.getValue(UserInformation.class);
LatLng location=new LatLng(user.latitude,user.longitude);
mMap.addMarker(new MarkerOptions().position(location).title(user.marker+" ("+user.thongtin+")")).setIcon(BitmapDescriptorFactory.fromBitmap(smallMarker));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 13));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onConnected(@Nullable Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public boolean onMarkerClick(Marker marker) {
return false;
}
@Override
protected void onResume() {
super.onResume();
if (mMap != null) {
mMap.clear();
}
}
}
Я включил Google Maps API и Places SDK, но он все еще не работает Есть что-нибудь, чего я не понял? Спасибо