wft-geodb-angular-client

Provides Angular client bindings to the GeoDB service.


Keywords
geodb, location, localization, angular, client, sdk
License
MIT
Install
npm install wft-geodb-angular-client@6.0.2

Documentation

GeoDB Angular Client

This library provides Angular client bindings to the GeoDB service.

Setup

  1. cd into your Angular project root.

  2. npm install wft-geodb-angular-client@latest --save

If using the FREE instance, update your AppModule.ts as follows:

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
    GeoDbFreeModule.forRoot({
      apiKey: null,
      serviceUri: http://geodb-free-service.wirefreethought.com
    })
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

Otherwise, if using the PRO instance:

  1. Create an account on RapidAPI. As part of account creation, Rapid asks for credit-card info. As long as you stay within the free usage limits of the Basic plan, your credit card will not be charged.
  2. Select a GeoDB plan.
  3. Update your AppModule.ts as follows:
    @NgModule({
      declarations: [
        ...
      ],
      imports: [
        ...
        GeoDbProModule.forRoot({
          apiKey: YOUR_MASHAPE_KEY,
          serviceUri: https://wft-geo-db.p.mashape.com
        })
      ],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    

Usage

In your Typescript class:

constructor(private geoDbService: GeoDbService) { }

Later on, in some method:

this.geoDbService.someMethod({
    someRequestParam: value,
    someOtherRequestParam: value,
    ...
  })
  .subscribe(
    (response: GeoResponse<TheResponsePayloadType>) => {
        // Do your thing!
      }
  )

Cookbook

Find all cities in the US starting with San and having a minimum population of 100,000 (first 10 results):

this.geoDbService.findCities({
    namePrefix: "San", 
    countryIds: [
      "US"
    ], 
    minPopulation: 100000, 
    limit: 10, 
    offset: 0
  })
  .subscribe(
    (response: GeoResponse<CitySummary[]>) => {
      const totalCount = response.metadata.totalCount;
      let data: CitySummary[] = response.data;
      
      // Do your thing!
    }
  );

Find all cities and towns in the Los Angeles area and having a minimum population of 50,000 - sorting by population, descending (first 10 results):

this.geoDbService.findCityById("Q65")
  .subscribe(
    (cityByIdResponse: GeoResponse<CityDetails> => {
      const cityLocation: GeoLocation = cityByIdResponse.data.location;
  
      this.geoDbService.findCitiesNearLocation({
          location: {
            latitude: cityLocation.latitude,
            longitude: cityLocation.longitude,
            radius: 50,
            radiusUnit: "MI"
          }, 
          minPopulation: 50000,
          sortDirectives: [
            "-population"
          ], 
          limit: 10, 
          offset: 0          
        })
        .subscribe(
          (citiesNearLocationResponse: GeoResponse<CitySummary[]>) => {
            const totalCount = citiesNearLocationResponse.metadata.totalCount;
            let data: CitySummary[] = citiesNearLocationResponse.data;
            
            // Do your thing!
        }
      );    
    }
  );

Find all cities in California having a minimum population of 100,000 - sorting by population, ascending (first 10 results):

this.geoDbService.findRegionCities({
    countryId: "US",
    regionCode: "CA",
    minPopulation: 100000,
    sortDirectives: [
      "population"
    ],     
    limit: 10, 
    offset: 0           
  })
  .subscribe(
    (response: GeoResponse<CitySummary[]>) => {
      const totalCount = response.metadata.totalCount;
      let data: CitySummary[] = response.data;
      
      // Do your thing!
    }
  );

Find all cities in the Los Angeles and New York time-zones - sorting by elevation, ascending, then population, descending (first 10 results):

this.geoDbService.findCities({
    timeZoneIds: [
      "America__Los_Angeles, America__New_York"
    ], 
    sortDirectives: [
      "elevation",
      "-population"
    ],        
    limit: 10, 
    offset: 0           
  })
  .subscribe(
    (response: GeoResponse<CitySummary[]>) => {
      const totalCount = response.metadata.totalCount;
      let data: CitySummary[] = response.data;
      
      // Do your thing!
    }
  );

See the sample app for more detailed examples.

API Docs

For detailed REST docs, go here.