AutoComplete Search bar in Google Maps

前端 未结 2 1984
悲&欢浪女
悲&欢浪女 2020-12-10 16:23

I\'m creating an app based on places search. I would like to know how can I add a search bar into my Google Map, where the user can select a Place, and I can capture what th

2条回答
  •  青春惊慌失措
    2020-12-10 17:04

    Yes, you can do that by make method for addMarker when you press on the place, You can use this code:

    public class PlaceAutocompleteActivity extends AppCompatActivity implements OnMapReadyCallback {
    
        private GoogleMap mMap;
        PlaceAutocompleteFragment placeAutoComplete;
    
        LatLng myLat;
        Place placey;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_autocompleteplaces);
    
            getSupportActionBar().setTitle("Search about a Place");
    
            placeAutoComplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete);
            placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() {
                @Override
                public void onPlaceSelected(Place place) {
                    addMarker(place);
                }
    
                @Override
                public void onError(Status status) {
                    Log.d("Maps", "An error occurred: " + status);
                }
            });
    
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.mapplaces);
            mapFragment.getMapAsync(this);
        }
    
        @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;
        }
    
        public void addMarker(Place p){
    
            MarkerOptions markerOptions = new MarkerOptions();
    
            markerOptions.position(p.getLatLng());
            markerOptions.title(p.getName()+"");
            markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
    
            mMap.addMarker(markerOptions);
            mMap.moveCamera(CameraUpdateFactory.newLatLng(p.getLatLng()));
            mMap.animateCamera(CameraUpdateFactory.zoomTo(13));
        }
    }
    

提交回复
热议问题