ngx-geoautocomplete
Version:
angular 6+ compatible google autocomplete with server side api support and AOT enabled
164 lines (132 loc) • 8.12 kB
Markdown
# Angular 6 compatible google autocomplete
[](https://travis-ci.org/tanoy009/ng4-geoautocomplete)
[](https://codecov.io/gh/tanoy009/ng4-geoautocomplete)
[](http://badge.fury.io/js/ng4-geoautocomplete)
[](https://david-dm.org/tanoy009/ng4-geoautocomplete?type=dev)
[](https://github.com/tanoy009/ng4-geoautocomplete/issues)
[](https://github.com/tanoy009/ng4-geoautocomplete/stargazers)
[](https://raw.githubusercontent.com/tanoy009/ng4-geoautocomplete/master/LICENSE)
## Demo (original version ng4)
https://tanoy009.github.io/ng4-geoautocomplete/
## Test Case.
In Pipeline will be updated in a while.
## Table of contents
- [About](#about)
- [Installation](#installation)
- [Documentation](#documentation)
- [Development](#development)
- [License](#license)
## About
angular 6 compatible google autocomplete with server side api support and AOT enabled
## Installation
Install through npm:
```
npm install --save ngx-geoautocomplete
```
Then include in your apps module:
```typescript
import { Component, NgModule } from '@angular/core';
import { NgxGeoautocompleteModule } from 'ngx-geoautocomplete';
@NgModule({
imports: [
NgxGeoautocompleteModule.forRoot()
]
})
export class MyModule {}
```
Add google place script in your main file generally referred to 'index.html' (Optional if you want to use google services).
```
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=true&key=XXReplace this with valid keyXX&libraries=places&language=en-US"></script>
```
Finally use in one of your apps components:
```typescript
import { Component } from '@angular/core';
@Component({
template: '<ngxgeo-autocomplete [userSettings]="userSettings" (componentCallback)="autoCompleteCallback1($event)"></ng4geo-autocomplete>'
})
export class MyComponent {
userSettings = {}
autoCompleteCallback1(selectedData:any) {
//do any necessery stuff.
}
}
```
List of settings that can be used to configure the module (all config. are optional):
```typescript
{
geoPredictionServerUrl?: string; //should be a server url which returns list of places upon input query (GET request)
geoLatLangServiceUrl?: string; //should be a server url which returns place object upon lat and lon. (GET request)
geoLocDetailServerUrl?: string; //should be a server url which returns place details upon placeID received by 'geoPredictionServerUrl' (GET request)
geoCountryRestriction?: any; //should be an array of country code where search should be restricted like ['in', 'us', 'pr', 'vi', 'gu', 'mp'] *(Default: 'no restriction')*
geoTypes?: any; //should be an array of Place types defined by [Google api](https://developers.google.com/places/web-service/autocomplete#place_types).
geoLocation?: any; //should be an array in the format [latitude,longitude]. This feature will not work if country restriction is implimented.
geoRadius?: number; //should be a number and should only be used with 'geoLocation'.
serverResponseListHierarchy?: any; //should be an array of key from where 'geoPredictionServer' data should be extracted. (see Example.)
serverResponseatLangHierarchy?: any; //should be an array of key from where 'geoLatLangService' data should be extracted. (see Example.)
serverResponseDetailHierarchy?: any; //should be an array of key from where 'geoLocDetailSerice' data should be extracted. (see Example.)
resOnSearchButtonClickOnly?: boolean; //when output should be emmited when search button clicked only.
useGoogleGeoApi?: boolean; //should set to 'false' when server urls to be used instade of google api. *(Default: true)*
inputPlaceholderText?: string; //Input Placeholder text can be changed *(Default: 'Enter Area Name')*
inputString?: string; //Default selected input like prefefined address. *(Default: ''). See Example 3 in Demo after 10 sec*
showSearchButton?: boolean; //Search button to be visible or not. *(Default: true)*
showRecentSearch?: boolean; //Recent search to be saved & shown to user or not. *(Default: true)*
showCurrentLocation?: boolean; //current location option to be visible or not. *(Default: true)*
recentStorageName?: string; //Recent seraches are saved in browser localsorage. The key value which is used by the module to save can be changed. *(Default: 'recentSearches')*
noOfRecentSearchSave?: number; //Number of recent user entry to be saved . *(Default: 5)*
currentLocIconUrl?: string; //Current location icon can be changed *(Should be an image url or svg url)*
searchIconUrl?: string; //Search icon can be changed *(Should be an image url or svg url)*
locationIconUrl?: string; //Genetal Location icon can be changed *(Should be an image or svg url)*
}
```
#### NOTE: Component settings can also be altered after component initialization. Please follow the below method to change.
```typescript
this.userSettings: any = {
inputPlaceholderText: 'This is the placeholder text doring component initialization'
}
this.userSettings['inputPlaceholderText'] = 'This is the placeholder text after doing some external operation after some time';
this.userSettings = Object.assign({},this.userSettings) //Very Important Line to add after modifying settings.
```
#### NOTE:
'geoTypes' can be used for multiple Place Types like `['(regions)', '(cities)']` OR `['(regions)', 'establishment', 'geocode']`. This will make individual api call for each Place Types to google to fetch lists and then it will merge the resuts with uniqueness.To know avalable Place Types please refer [Google api](https://developers.google.com/places/web-service/autocomplete#place_types).USE THIS FEATURE CAREFULLY<br/><br/>
### You may also find it useful to view the [demo source](https://github.com/tanoy009/ng4-geoautocomplete/blob/master/demo/demo.component.ts).
### You can change the component css in the below manner (You have to set encapsulation to None)
```
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'any-component-name',
encapsulation: ViewEncapsulation.None,
template: '<div class="demo"><ng4geo-autocomplete (componentCallback)="autoCompleteCallback1($event)"></ng4geo-autocomplete></div>',
styles: ['
.demo #search_places {
height: 100px;
}
']
})
```
### You can use it with system js as well
`'ng4-geoautocomplete': 'npm:ng4-geoautocomplete/bundles/ng4-geoautocomplete.umd.js'`
### Usage without a module bundler
```
<script src="node_modules/ng4-geoautocomplete/bundles/ng4-geoautocomplete.umd.js"></script>
<script>
// everything is exported ng4Geoautocomplete namespace
</script>
```
## Documentation
All documentation is auto-generated from the source via [compodoc](https://compodoc.github.io/compodoc/) and can be viewed here:
https://tanoy009.github.io/ng4-geoautocomplete/docs/
## Development
### Prepare your environment
* Install [Node.js](http://nodejs.org/) and NPM
* Install local dev dependencies: `npm install` while current directory is this repo
### Development server
Run `npm start` to start a development server on port 8000 with auto reload + tests.
### Testing
Run `npm test` to run tests once or `npm run test:watch` to continually run tests.
### Release
* Bump the version in package.json (once the module hits 1.0 this will become automatic)
```bash
npm run release
```
## License
MIT