Skip to content

Instantly share code, notes, and snippets.

@bamnet
Created July 22, 2019 03:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bamnet/34e0b49b40ac67690f71ca3ab9316270 to your computer and use it in GitHub Desktop.
Save bamnet/34e0b49b40ac67690f71ca3ab9316270 to your computer and use it in GitHub Desktop.
export async function filterParks(placesSvc: import("./places").PlacesService): Promise<Park[]> {
return Promise.all(ListParks().map((park) => park.findPlace(placesSvc))).then((parks) => {
return parks.filter((park) => park.placeResult!.formatted_address!.includes("New York, NY"));
});
}
export class Park {
// Name of the park.
name: string;
// Place ID, once found.
placeId?: string;
// Cached Google Places API result.
_placeResult?: google.maps.places.PlaceResult;
set placeResult(result: google.maps.places.PlaceResult | undefined) {
this._placeResult = result;
if (result) {
this.placeId = result.place_id
} else {
this.placeId = undefined;
};
}
get placeResult(): google.maps.places.PlaceResult | undefined {
return this._placeResult;
}
get place(): google.maps.Place {
return {placeId: this.placeId};
}
constructor(name: string) {
this.name = name;
}
async findPlace(svc: import("./places").PlacesService) {
const req = {
query: this.name,
locationBias: { lat: 40.730610, lng: -73.935242 },
fields: ['place_id', 'formatted_address', 'name', 'geometry.location'],
};
return svc.findPlaceFromQueryAsync(req).then((results) => {
this.placeResult = results[0];
return this;
});
}
}
const ParkNames = [
'African Burial Ground NM',
'Castle Clinton NM',
'Eleanor Roosevelt NHS',
'Federal Hall N MEM',
'Fire Island NS',
'Fort Stanwix NM',
'Gateway NRA',
'General Grant N MEM',
'Governors Island NM',
'Hamilton Grange N MEM',
'Harriet Tubman National Historical Park',
'Home of Franklin D. Roosevelt NHS',
'Lower East Side Tenement Museum NHS',
'Martin Van Buren NHS',
'Sagamore Hill NHS',
'Saint Paul’s Church NHS',
'Saratoga NHP',
'Stonewall NM',
'Theodore Roosevelt Birthplace NHS',
'Theodore Roosevelt Inaugural NHS',
'Thomas Cole NHS',
'Upper Delaware SRR',
'Vanderbilt Mansion NHS',
'Women’s Rights NHP',
];
export function ListParks(): Park[] {
return ParkNames.map(s => new Park(s));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment