search_map_location 0.0.3
search_map_location: ^0.0.3 copied to clipboard
search_map_location is a text search widget used to search geo location by name.It has severel call back and customization option to handle the place search.
search_map_location #
search_map_location is a text search widget used to search geo location by name.It has severel call back and customization option to handle the place search.
Getting Started #
To install, add it to your pubspec.yaml file:
dependencies:
search_map_location: 0.0.3
After that, make sure you have the following APIs activated in your Google Cloud Platform:
- Places
You can now import it to your file and use it on your app.
import 'package:search_map_location/search_map_location.dart';
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SearchMapPlaceWidget(
apiKey: // YOUR GOOGLE MAPS API KEY
onSelected: (Place place){
print(place.description);
},
)
)
);
}
The constructor has 8 attributes related to the API:
String apiKeyis the only required attribute. It is the Google Maps API Key your application is using(Place) void onSelectedis a callback function called when the user selects one of the autocomplete options.(Place) void onSearchis a callback function called when the user clicks on the search icon.String languageis the Language used for the autocompletion. Default is 'en' (english). Check the full list of supported languages for the Google Maps APIString countryyou can allow the search work only for a specific country.While usingcountrydon't uselocationandradius.Use ISO(Use alpha 2) code for country name see iso code of countriesLatLng locationis the point around which you wish to retrieve place information. If this value is provided,radiusmust be provided aswell.int radiusis the distance (in meters) within which to return place results. Note that setting a radius biases results to the indicated area, but may not fully restrict results to the specified area. If this value is provided,locationmust be provided aswell. See Location Biasing and Location Restrict in the Google Maps API documentation.bool restrictBoundswill return only those places that are strictly within the region defined bylocationandradius.PlaceType placeTypewill allow you to filter Places by its type. For more information on available types, check supported types for Autocompletion. On default, no filters are passed to the request, which means all Place types will be shown on autocompletion.
The Place class #
This class will be returned on the onSelected and onSearch methods. It allows us to get more information about the user selected place.
Initially, it provides you with only basic information:
descriptioncontains the human-readable name for the returned result. For establishment results, this is usually the business name.placeIdA textual identifier that uniquely identifies a place. For more information about place IDs, see the Place IDs overview.typescontains an array of types that apply to this place. The array can contain multiple values. Learn more about Place types.fullJSONhas the full JSON response received from the Places API. Can be used to extract extra information. More info on the Places Autocomplete API documentation
However, you can get more information like the coordinates and the bounds of the place by calling
await place.geolocation;
Example #
Here's an example of the widget using country :
return SearchMapPlaceWidget(
apiKey: YOUR_API_KEY,
// The language of the autocompletion
language: 'en',
//Search only work for this specific country
country: 'BD',
onSelected: (Place place) async {
final geolocation = await place.geolocation;
// Will animate the GoogleMap camera, taking us to the selected position with an appropriate zoom
final GoogleMapController controller = await _mapController.future;
controller.animateCamera(CameraUpdate.newLatLng(geolocation.coordinates));
controller.animateCamera(CameraUpdate.newLatLngBounds(geolocation.bounds, 0));
},
);
Here's an example of the widget using location and radius :
return SearchMapPlaceWidget(
apiKey: YOUR_API_KEY,
// The language of the autocompletion
language: 'en',
// location is the center of a place and the radius provided here are between this radius of this place search result
//will be provided,you can set this LatLng dynamically by getting user lat and long in double value
location: LatLng(latitude: 9.072264, longitude: 7.491302),
radius: 1100,
onSelected: (Place place) async {
final geolocation = await place.geolocation;
// Will animate the GoogleMap camera, taking us to the selected position with an appropriate zoom
final GoogleMapController controller = await _mapController.future;
controller.animateCamera(CameraUpdate.newLatLng(geolocation.coordinates));
controller.animateCamera(CameraUpdate.newLatLngBounds(geolocation.bounds, 0));
},
);