1.1.2 • Published 5 months ago

@nora-soderlund/google-maps-solar-api v1.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

google-maps-solar-api

This is a TypeScript package for calling the new Solar API endpoints, including full types for all query inputs and body responses.

Get started

npm install @nora-soderlund/google-maps-solar-api

Getting building insights from a coordinate

import { findClosestBuildingInsights } from "@nora-soderlund/google-maps-solar-api";

const buildingInsights = await findClosestBuildingInsights("API_KEY", {
  location: {
    latitude: 57.70936,
    longitude: 11.97345
  }
});

Getting data layers from a coordinate

import { getDataLayers } from "@nora-soderlund/google-maps-solar-api";

const dataLayers = await getDataLayers("API_KEY", {
  location: coordinate,
  radiusMeters: 100,
  view: "IMAGERY_AND_ANNUAL_FLUX_LAYERS"
});

Using a proxy URL instead of API key

You can use your own Solar API proxy to implement this package in your clients and apply rate limiting or session authentication on your end.

Simply pass a URL object instead of a string in replacement of the API key. Only the host will be used, the protocol must be HTTPS.

import { findClosestBuildingInsights } from "@nora-soderlund/google-maps-solar-api";

const proxyUrl = new URL("https://my-solar-api-proxy.com");

const buildingInsights = await findClosestBuildingInsights(proxyUrl, {
  location: {
    latitude: 57.70936,
    longitude: 11.97345
  }
});

Subsequent request will be sent to e.g. https://my-solar-api-proxy.com/v1/buildingInsights:findClosest?....

Implementation examples

See my developer blog article for an example of using the Solar API data layers with a dynamic Google Maps instance:

https://nora-soderlund.com/articles/integrating-the-new-solar-api-in-google-maps

Another example of visualizing potential solar panel placements in dynamic maps:

https://nora-soderlund.com/articles/visualizing-potential-solar-panel-placements-in-google-maps

References

Building Insights

findClosestBuildingInsights

findClosestBuildingInsights(apiKeyOrProxyUrl: string | URL, query: FindClosestBuildingInsightsParameters): Promise<BuildingInsights>

Returns a BuildingInsights object or throws a generic Error if the request failed.

See buildingInsights.findClosest on the Solar API reference.


Data Layers

getDataLayers

getDataLayers(apiKeyOrProxyUrl: string | URL, query: GetDataLayersParameters): Promise<DataLayers>

Returns a DataLayers object or throws a generic Error if the request failed.

See dataLayers.get on the Solar API reference.


getGeoTiff(apiKeyOrProxyUrl: string | URL, url: string): Promise<ArrayBuffer>

Returns a raw ArrayBuffer object of the GeoTIFF file or throws a generic Error if the request failed.

See geoTiff.get on the Solar API reference.


Helpers

getDataLayersForBounds

getDataLayersForBounds(bounds: LatLngBox, pixelSizeMeters: number, paddingMeters: number = 0): DataLayerBounds

Used for getting a connected area coverage. Does not perform any asynchronous requests. Returns a DataLayerBounds object.


DataLayerBounds

dataLayerView: DataLayerView;

The highest supported data layer view, for radius meters over 175m, the DataLayerView in the request must not include monthly flux or hourly shade.

tiles
tiles: LatLng[];

The tiles that make up the generated bounds, use with radiusMetersPerTile

radiusMetersPerTile
radiusMetersPerTile: number;

The radius in meters for each tile.

bounds
bounds: LatLngBox;

The generated bounds for the new tiles.

horizontalTiles
horizontalTiles: number;
verticalTiles
verticalTiles: number;

The horizontal and vertical tiles count.

1.1.2

5 months ago

1.1.1

8 months ago

1.1.0

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago

0.9.1

8 months ago

0.9.0

8 months ago