DefinitelyTyped/googlemaps/google.maps.d.ts
Paul Welter d63ae9035b Googlemaps label (#8972)
* Add typings for redux-debounced.

* add SFTP type in `ssh2`

* New options have been added

* Firebase: Generic Github, Twitter and Facebook authentication providers (#8870)

* Firebase: Generic Github, Twitter and Facebook authentication providers

* Firebase: Authentication definitions for Email and Password, Twitter, Github, Facebook and Anonymous

* Added definition files for koa-json (#8873)

* Add toDate() sanitizer (#8871)

* typo at TextGeometryParameters (#8874)

* Update Kendo UI TypeScript Definitions (#8879)

* Updated material-ui.d.ts (#8881)

Added DOMAttributes to FlatButton and Dialog properties.

* Methods were missing on kendo.Observable (#8883)

* Enable type checking for constant and value (#8885)

Using a generic type one can type check the `constant` or `value` in angular.module.

* Try to provide a new definition for ioredis (#8910)

* Create ioredis.d.ts

* Create ioredis-tests.ts

* Update ioredis.d.ts

* Update ioredis-tests.ts

* expose interfaces as type

* mark Response.error() and Response.redirect() as static (#8887)

Fixes #7777

* Created definitions for promise-pg (#8888)

* Created definitions for promise-pg

Dependencies:
* node
* Q
* pg

Tests script is cribbed from pg typings and modified for promise-pg.

'promise-pg'.Client does not inherit from 'pg'.Client because the
functions redefined to return promises completely replace the originals
from 'pg'.

* fix: QueryConfig.buffer is optional

It's only needed when doing a SELECT anyway, so mark it optional.

* Bring promise-pg tests in line with examples from promise-pg readme

* Add the promise-pg readme examples as tests

* Add ControllerService to angular-mocks (#8889)

* Add ControllerService to angular-mocks

The definition in angular.d.ts changed that used to included this definition.
Needed because of 69d2fb9

* Added unit tests for controller service mock

* Create html-entities definitions file (#8890)

* Create html-entities definitions file

* Fix Travis test

* Introduce done function declaration with fail method (#8891)

* Updated node-mssql to v3.2.1 (#8893)

* Updated node-mssql to v3.2.1

According to https://github.com/patriksimek/node-mssql#2x-to-3x-changes, updated the definitions.

* Update mssql.d.ts

* Update mssql.d.ts

* Introduce `unfoundState` type from `$stateNotFound` event (#8894)

* partition's thisArg should be optional (#8895)

* Added react-tagcloud (#8899)

* Fixing a few API set annotations in Office-js.d.ts (#8892)

Fixed api set annotations on half-a-dozen methods that were erroneously labeled as 1.1, whereas they really belong the the 1.2 set.

* add declare module "nouislider" (#8905)

* Added Filesize definitions (#8908)

* filesize definition file added.

* Updated filesize definition.

* Added SiJedec type to suffixes

* Created filesize tests file.

* Added definition file reference in tests.

* Allow import statement from Typescript (#8911)

* Missing loglevel public API methods added (#8914)

* Update definition of Flatten method in chain. (#8901)

* RxJS: resultSelector is optional in combineLatest (#8917)

* declare namespace ExpressUseragent (#8918)

* declare namespace ExpressUseragent

- declare namespace ExpressUseragent
- fix error Import declaration conflicts with local declaration of 'express'

* Update express-useragent.d.ts

* Update express-useragent.d.ts

* Node.js Buffer should be useable as a Uint8Array and is missing a constructor (#8919)

* make NodeBuffer extend Uint8Array

* add missing Buffer(ArrayBuffer) constructor

* add TODOs for missing Buffer methods

* Add option that can be set for CircleMarker (#8912)

* Return typed definition from toJSON method (#8859)

* Return typed definition from toJSON method

* Test toJSON returns IMyResource

* Update http-status to 0.2.1 (#8920)

* Add rebass (#8925)

* Add type definitions for 'rebass' module

https://github.com/jxnblk/rebass

* Add tests for rebass.d.ts

* github-electron update (#8922)

* Update URLs to new location: https://github.com/electron/electron/blob/master/docs

* Fix CrashReporter interface

* Fix isMainFrame type in WebViewElement.LoadCommitEvent

* Update menu-item documentation

* Fix ContentTracing interface

* Create Falcor definitions (#8882)

* Create Falcor definitions

* Rename some interfaces(Upper camel)

* Add type definitions for 'twitter-text' module (#8928)

* Add type definitions for 'twitter-text' module

* Add tests for twitter-text.d.ts

* Add user defined type guard for entities to tests

* Add a missing file reference to test file

* adding microgears definitions (#8930)

* qrcode-generator added (#8932)

* Add type definitions for Handsontable (#8934)

* feat(): add type definition for cordova-plugin-background-mode (#8936)

fix(): space out the comment text from commenting slash

* add js-md5 export (#8940)

add js-md5 export

* Update avaiable hooks. (#8909)

Apply comments.

Minor changes.

* Fix dom4 typings so they work with latest nightlies of TS (#8943)

The deleted members are defined in lib.d.ts's ElementTraversal interface
and thus don't need to be defined in here.

* Fix function definitions in flowjs.d.ts (#8942)

* Fix function definitions in flowjs.d.ts

* Update flowjs-tests.ts

* Update gapi.d.ts (#8944)

Adding the optional url param to gapi.client.load

* Update angular-material.d.ts (#8896)

Add IColorPalette for [$mdColorPalette](https://github.com/angular/material/blob/master/src/core/services/theming/theme.palette.js)

* Allow specifying `void` for component state type parameter. (#8673)

* Allow specifying `void` for component state type parameter.

Per comments on https://github.com/DefinitelyTyped/DefinitelyTyped/pull/8543,
the type parameter for component state was changed to `{}` from `any` for
increased type safety, but prevents specifying (non-functional) stateless
components without having empty state parameters, which seems messy. This
changes the type to `{} | void` to allow this while staying stricter than
`any`.

* Make react tests a bit more strict.

* Rename State -> ComponentState to make it a bit more explicit.

* Add documentation for cookie-js (#8836)

* Backbone: History.getFragment, the implementation doesn't have any mention of a second argument (#8949)

* Update react-intl locale data location (#8945)

* Stripe node 4.5.0 (#8907)

* Update Stripe library definitions to version 4.5.0.

And update to API version 2016-03-07.

Ideally more tests need to be added, but I've ran out of time to
implement all that is needed. The tests cover just enough for now,
although they are by no means thorough.

* Fix CI test errors

* Add correct header options

Add correct header options to method definitions.

As I understand it, all methods have the ability to have header options,
and they should always appear after any data options, see:

https://github.com/stripe/stripe-node/blob/master/lib/StripeMethod.js#L61
https://stripe.com/docs/connect/authentication

Tests still need to be added.

* Rename account to accounts

And fix other small bugs:
- L4626: Fix duplicate arg name
- L4999: Add missing method definition

* Rename CustomerSubscription Methods

Rename some CustomerSubscription methods that were named incorrectly.

* Define chargeObj.refunds methods

Add ChargeRefunds methods to ICharge interface and add resource class.

https://github.com/stripe/stripe-node/blob/master/lib/resources/ChargeRefunds.js

* Add verifySource placeholder methods

Add verifySource placeholder method to the Customer resource class. This
needs to be properly implemented later.

Also update InvoiceLineItem.type property to be a string literal type.

* Test clean up

Clean up the tests and add a few missing tests. All current tests now
also test for Promise method returns.

Still a lot of missing tests, but it's better than before.

* Dropzone update (#8950)

* Update dropzone.d.ts to 4.3.0

* Update dropzone-commonjs-tests.ts

* Update dropzone-tests.ts

* Update dropzone.d.ts

* Update dropzone.d.ts

* Update dropzone-tests.ts

* Update dropzone-commonjs-tests.ts

* Update dropzone-tests.ts

* Update dropzone.d.ts

* Update dropzone.d.ts

* added "src and "fields" to bunyan Logger definition (#8954)

* Added typings for rx-dom (#8792)

* Added typings for rx-dom

* Added missing references

* Rename test file to tests

* Rename tests

* Fixed tests

* Fixed tests

* Update to 15.2.9 (#8953)

* add MarkerLabel definition

* add docs to MarkerLabel

* add missing getLabel and setLabel to Marker
2016-04-14 21:44:51 +09:00

2270 lines
73 KiB
TypeScript

// Type definitions for Google Maps JavaScript API 3.20
// Project: https://developers.google.com/maps/
// Definitions by: Folia A/S <http://www.folia.dk>, Chris Wrench <https://github.com/cgwrench>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/*
The MIT License
Copyright (c) 2012 Folia A/S. http://www.folia.dk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
declare namespace google.maps {
/***** Map *****/
export class Map extends MVCObject {
constructor(mapDiv: Element, opts?: MapOptions);
fitBounds(bounds: LatLngBounds): void;
getBounds(): LatLngBounds;
getCenter(): LatLng;
getDiv(): Element;
getHeading(): number;
getMapTypeId(): MapTypeId|string;
getProjection(): Projection;
getStreetView(): StreetViewPanorama;
getTilt(): number;
getZoom(): number;
panBy(x: number, y: number): void;
panTo(latLng: LatLng|LatLngLiteral): void;
panToBounds(latLngBounds: LatLngBounds): void;
setCenter(latlng: LatLng|LatLngLiteral): void;
setHeading(heading: number): void;
setMapTypeId(mapTypeId: MapTypeId|string): void;
setOptions(options: MapOptions): void;
setStreetView(panorama: StreetViewPanorama): void;
setTilt(tilt: number): void;
setZoom(zoom: number): void;
controls: MVCArray[]; //Array<MVCArray<Node>>
data: Data;
mapTypes: MapTypeRegistry;
overlayMapTypes: MVCArray; // MVCArray<MapType>
}
export interface MapOptions {
backgroundColor?: string;
center?: LatLng|LatLngLiteral;
disableDefaultUI?: boolean;
disableDoubleClickZoom?: boolean;
draggable?: boolean;
draggableCursor?: string;
draggingCursor?: string;
heading?: number;
keyboardShortcuts?: boolean;
mapMaker?: boolean;
mapTypeControl?: boolean;
mapTypeControlOptions?: MapTypeControlOptions;
mapTypeId?: MapTypeId;
maxZoom?: number;
minZoom?: number;
noClear?: boolean;
overviewMapControl?: boolean;
overviewMapControlOptions?: OverviewMapControlOptions;
panControl?: boolean;
panControlOptions?: PanControlOptions;
rotateControl?: boolean;
rotateControlOptions?: RotateControlOptions;
scaleControl?: boolean;
scaleControlOptions?: ScaleControlOptions;
scrollwheel?: boolean;
streetView?: StreetViewPanorama;
streetViewControl?: boolean;
streetViewControlOptions?: StreetViewControlOptions;
styles?: MapTypeStyle[];
tilt?: number;
zoom?: number;
zoomControl?: boolean;
zoomControlOptions?: ZoomControlOptions;
}
export enum MapTypeId {
HYBRID,
ROADMAP,
SATELLITE,
TERRAIN
}
/***** Controls *****/
export interface MapTypeControlOptions {
mapTypeIds?: (MapTypeId|string)[];
position?: ControlPosition;
style?: MapTypeControlStyle;
}
export enum MapTypeControlStyle {
DEFAULT,
DROPDOWN_MENU,
HORIZONTAL_BAR
}
export interface OverviewMapControlOptions {
opened?: boolean;
}
export interface PanControlOptions {
position?: ControlPosition;
}
export interface RotateControlOptions {
position?: ControlPosition;
}
export interface ScaleControlOptions {
style?: ScaleControlStyle;
}
export enum ScaleControlStyle {
DEFAULT
}
export interface StreetViewControlOptions {
position?: ControlPosition;
}
export interface ZoomControlOptions {
position?: ControlPosition;
style?: ZoomControlStyle;
}
export enum ZoomControlStyle {
DEFAULT,
LARGE,
SMALL
}
export enum ControlPosition {
BOTTOM_CENTER,
BOTTOM_LEFT,
BOTTOM_RIGHT,
LEFT_BOTTOM,
LEFT_CENTER,
LEFT_TOP,
RIGHT_BOTTOM,
RIGHT_CENTER,
RIGHT_TOP,
TOP_CENTER,
TOP_LEFT,
TOP_RIGHT
}
/***** Data *****/
export class Data extends MVCObject {
constructor(options?: Data.DataOptions);
add(feature: Data.Feature|Data.FeatureOptions): Data.Feature;
addGeoJson(geoJson: Object, options?: Data.GeoJsonOptions): Data.Feature[];
contains(feature: Data.Feature): boolean;
forEach(callback: (feature: Data.Feature) => void): void;
getControlPosition(): ControlPosition;
getControls(): string[];
getDrawingMode(): string;
getFeatureById(id: number|string): Data.Feature;
getMap(): Map;
getStyle(): Data.StylingFunction|Data.StyleOptions;
loadGeoJson(url: string, options?: Data.GeoJsonOptions, callback?: (features: Data.Feature[]) => void): void;
overrideStyle(feature: Data.Feature, style: Data.StyleOptions): void;
remove(feature: Data.Feature): void;
revertStyle(feature?: Data.Feature): void;
setControlPosition(controlPosition: ControlPosition): void;
setControls(controls: string[]): void;
setDrawingMode(drawingMode: string): void;
setMap(map: Map): void;
setStyle(style: Data.StylingFunction|Data.StyleOptions): void;
toGeoJson(callback: (feature: Object) => void): void;
}
export module Data {
export interface DataOptions {
controlPosition?: ControlPosition;
controls?: string[];
drawingMode?: string;
featureFactory?: (geometry: Data.Geometry) => Data.Feature;
map?: Map;
style?: Data.StylingFunction|Data.StyleOptions;
}
export interface GeoJsonOptions {
idPropertyName?: string;
}
export interface StyleOptions {
clickable?: boolean;
cursor?: string;
draggable?: boolean;
editable?: boolean;
fillColor?: string;
fillOpacity?: number;
icon?: string|Icon|Symbol;
shape?: MarkerShape;
strokeColor?: string;
strokeOpacity?: number;
strokeWeight?: number;
title?: string;
visible?: boolean;
zIndex?: number;
}
export type StylingFunction = (feature: Data.Feature) => Data.StyleOptions;
export class Feature {
constructor(options?: Data.FeatureOptions);
forEachProperty(callback: (value: any, name: string) => void): void;
getGeometry(): Data.Geometry;
getId(): number|string;
getProperty(name: string): any;
removeProperty(name: string): void;
setGeometry(newGeometry: Data.Geometry|LatLng|LatLngLiteral): void;
setProperty(name: string, newValue: any): void;
toGeoJson(callback: (feature: Object) => void): void;
}
export interface FeatureOptions {
geometry?: Data.Geometry|LatLng|LatLngLiteral;
id?: number|string;
properties?: Object;
}
export class Geometry {
getType(): string;
}
export class Point extends Data.Geometry {
constructor(latLng: LatLng|LatLngLiteral);
get(): LatLng;
}
export class MultiPoint extends Data.Geometry {
constructor(elements: (LatLng|LatLngLiteral)[]);
getArray(): LatLng[];
getAt(n: number): LatLng;
getLength(): number;
}
export class LineString extends Data.Geometry {
constructor(elements: (LatLng|LatLngLiteral)[]);
getArray(): LatLng[];
getAt(n: number): LatLng;
getLength(): number;
}
export class MultiLineString extends Data.Geometry {
constructor(elements: (Data.LineString|(LatLng|LatLngLiteral)[])[]);
getArray(): Data.LineString[];
getAt(n: number): Data.LineString;
getLength(): number;
}
export class LinearRing extends Data.Geometry {
constructor(elements: (LatLng|LatLngLiteral)[]);
getArray(): LatLng[];
getAt(n: number): LatLng;
getLength(): number;
}
export class Polygon extends Data.Geometry {
constructor(elements: (Data.LinearRing|(LatLng|LatLngLiteral)[])[]);
getArray(): Data.LinearRing[];
getAt(n: number): Data.LinearRing;
getLength(): number;
}
export class MultiPolygon extends Data.Geometry {
constructor(elements: (Data.Polygon|(LinearRing|(LatLng|LatLngLiteral)[])[])[]);
getArray(): Data.Polygon[];
getAt(n: number): Data.Polygon;
getLength(): number;
}
export class GeometryCollection extends Data.Geometry {
constructor(elements: (Data.Geometry[]|LatLng[]|LatLngLiteral)[]);
getArray(): Data.Geometry[];
getAt(n: number): Data.Geometry;
getLength(): number;
}
export interface MouseEvent extends google.maps.MouseEvent {
feature: Data.Feature;
}
export interface AddFeatureEvent {
feature: Data.Feature;
}
export interface RemoveFeatureEvent {
feature: Data.Feature;
}
export interface SetGeometryEvent {
feature: Data.Feature;
newGeometry: Data.Geometry;
oldGeometry: Data.Geometry;
}
export interface SetPropertyEvent {
feature: Data.Feature;
name: string;
newValue: any;
oldValue: any;
}
export interface RemovePropertyEvent {
feature: Data.Feature;
name: string;
oldValue: any;
}
}
/***** Overlays *****/
export class Marker extends MVCObject {
static MAX_ZINDEX: number;
constructor(opts?: MarkerOptions);
getAnimation(): Animation;
getAttribution(): Attribution;
getClickable(): boolean;
getCursor(): string;
getDraggable(): boolean;
getIcon(): string|Icon|Symbol;
getLabel(): MarkerLabel;
getMap(): Map|StreetViewPanorama;
getOpacity(): number;
getPlace(): Place;
getPosition(): LatLng;
getShape(): MarkerShape;
getTitle(): string;
getVisible(): boolean;
getZIndex(): number;
setAnimation(animation: Animation): void;
setAttribution(attribution: Attribution): void;
setClickable(flag: boolean): void;
setCursor(cursor: string): void;
setDraggable(flag: boolean): void;
setIcon(icon: string|Icon|Symbol): void;
setLabel(label: string|MarkerLabel): void;
setMap(map: Map|StreetViewPanorama): void;
setOpacity(opacity: number): void;
setOptions(options: MarkerOptions): void;
setPlace(place: Place): void;
setPosition(latlng: LatLng|LatLngLiteral): void;
setShape(shape: MarkerShape): void;
setTitle(title: string): void;
setVisible(visible: boolean): void;
setZIndex(zIndex: number): void;
}
export interface MarkerOptions {
/**
* The offset from the marker's position to the tip of an InfoWindow
* that has been opened with the marker as anchor.
*/
anchorPoint?: Point;
/** Which animation to play when marker is added to a map. */
animation?: Animation;
/**
* If true, the marker receives mouse and touch events.
* @default true
*/
clickable?: boolean;
/** Mouse cursor to show on hover. */
cursor?: string;
/**
* If true, the marker can be dragged.
* @default false
*/
draggable?: boolean;
/**
* Icon for the foreground.
* If a string is provided, it is treated as though it were an Icon with the string as url.
* @type {(string|Icon|Symbol)}
*/
icon?: string|Icon|Symbol;
/**
* Adds a label to the marker. The label can either be a string, or a MarkerLabel object.
* Only the first character of the string will be displayed.
* @type {(string|MarkerLabel)}
*/
label?: string|MarkerLabel;
/**
* Map on which to display Marker.
* @type {(Map|StreetViewPanorama)}
*
*/
map?: Map|StreetViewPanorama;
/** The marker's opacity between 0.0 and 1.0. */
opacity?: number;
/**
* Optimization renders many markers as a single static element.
* Optimized rendering is enabled by default.
* Disable optimized rendering for animated GIFs or PNGs, or when each
* marker must be rendered as a separate DOM element (advanced usage
* only).
*/
optimized?: boolean;
/**
* Place information, used to identify and describe the place
* associated with this Marker. In this context, 'place' means a
* business, point of interest or geographic location. To allow a user
* to save this place, open an info window anchored on this marker.
* The info window will contain information about the place and an
* option for the user to save it. Only one of position or place can
* be specified.
*/
place?: Place;
/**
* Marker position. Required.
*/
position: LatLng;
/** Image map region definition used for drag/click. */
shape?: MarkerShape;
/** Rollover text. */
title?: string;
/** If true, the marker is visible. */
visible?: boolean;
/**
* All markers are displayed on the map in order of their zIndex,
* with higher values displaying in front of markers with lower values.
* By default, markers are displayed according to their vertical position on screen,
* with lower markers appearing in front of markers further up the screen.
*/
zIndex?: number;
}
export interface Icon {
/**
* The position at which to anchor an image in correspondence to the
* location of the marker on the map. By default, the anchor is
* located along the center point of the bottom of the image.
*/
anchor?: Point;
/**
* The origin of the label relative to the top-left corner of the icon
* image, if a label is supplied by the marker. By default, the origin
* is located in the center point of the image.
*/
labelOrigin?: Point;
/**
* The position of the image within a sprite, if any. By default, the
* origin is located at the top left corner of the image (0, 0).
*/
origin?: Point;
/**
* The size of the entire image after scaling, if any. Use this
* property to stretch/ shrink an image or a sprite.
*/
scaledSize?: Size;
/**
* The display size of the sprite or image. When using sprites, you
* must specify the sprite size. If the size is not provided, it will
* be set when the image loads.
*/
size?: Size;
/** The URL of the image or sprite sheet. */
url?: string;
}
export interface MarkerLabel {
/** The color of the label text. Default color is black. */
color?: string;
/** The font family of the label text (equivalent to the CSS font-family property). */
fontFamily?: string;
/** The font size of the label text (equivalent to the CSS font-size property). Default size is 14px. */
fontSize?: string;
/** The font weight of the label text (equivalent to the CSS font-weight property). */
fontWeight?: string;
/** The text to be displayed in the label. Only the first character of this string will be shown. */
text?: string;
}
export interface MarkerShape {
coords?: number[];
type?: string;
}
export interface Symbol {
/**
* The position of the symbol relative to the marker or polyline.
* The coordinates of the symbol's path are translated left and up by the anchor's x and y coordinates respectively.
* By default, a symbol is anchored at (0, 0).
* The position is expressed in the same coordinate system as the symbol's path.
*/
anchor?: Point;
/**
* The symbol's fill color.
* All CSS3 colors are supported except for extended named colors. For symbol markers, this defaults to 'black'.
* For symbols on polylines, this defaults to the stroke color of the corresponding polyline.
*/
fillColor?: string;
/**
* The symbol's fill opacity.
* @default 0
*/
fillOpacity?: number;
/**
* The symbol's path, which is a built-in symbol path, or a custom path expressed using SVG path notation. Required.
* @type {(SymbolPath|string)}
*/
path?: SymbolPath|string;
/**
* The angle by which to rotate the symbol, expressed clockwise in degrees.
* Defaults to 0.
* A symbol in an IconSequence where fixedRotation is false is rotated relative to the angle of the edge on which it lies.
*/
rotation?: number;
/**
* The amount by which the symbol is scaled in size.
* For symbol markers, this defaults to 1; after scaling, the symbol may be of any size.
* For symbols on a polyline, this defaults to the stroke weight of the polyline;
* after scaling, the symbol must lie inside a square 22 pixels in size centered at the symbol's anchor.
*/
scale?: number;
/**
* The symbol's stroke color. All CSS3 colors are supported except for extended named colors.
* For symbol markers, this defaults to 'black'.
* For symbols on a polyline, this defaults to the stroke color of the polyline.
*/
strokeColor?: string;
/**
* The symbol's stroke opacity. For symbol markers, this defaults to 1.
* For symbols on a polyline, this defaults to the stroke opacity of the polyline.
*/
strokeOpacity?: number;
/** The symbol's stroke weight. Defaults to the scale of the symbol.v*/
strokeWeight?: number;
}
/** Built-in symbol paths. */
export enum SymbolPath {
/** A backward-pointing closed arrow. */
BACKWARD_CLOSED_ARROW,
/** A backward-pointing open arrow. */
BACKWARD_OPEN_ARROW,
/** A circle. */
CIRCLE,
/** A forward-pointing closed arrow. */
FORWARD_CLOSED_ARROW,
/** A forward-pointing open arrow. */
FORWARD_OPEN_ARROW
}
export enum Animation {
BOUNCE,
DROP
}
/**
* An overlay that looks like a bubble and is often connected to a marker.
* This class extends MVCObject.
*/
export class InfoWindow extends MVCObject {
/**
* Creates an info window with the given options. An InfoWindow can be
* placed on a map at a particular position or above a marker,
* depending on what is specified in the options. Unless auto-pan is
* disabled, an InfoWindow will pan the map to make itself visible
* when it is opened. After constructing an InfoWindow, you must call
* open to display it on the map. The user can click the close button
* on the InfoWindow to remove it from the map, or the developer can
* call close() for the same effect.
*/
constructor(opts?: InfoWindowOptions);
/** Closes this InfoWindow by removing it from the DOM structure. */
close(): void;
getContent(): string|Element;
getPosition(): LatLng;
getZIndex(): number;
/**
* Opens this InfoWindow on the given map. Optionally, an InfoWindow can be associated with an anchor.
* In the core API, the only anchor is the Marker class.
* However, an anchor can be any MVCObject that exposes a LatLng position property and optionally
* a Point anchorPoint property for calculating the pixelOffset (see InfoWindowOptions).
* The anchorPoint is the offset from the anchor's position to the tip of the InfoWindow.
*/
open(map?: Map|StreetViewPanorama, anchor?: MVCObject): void;
setContent(content: string|Node): void;
setOptions(options: InfoWindowOptions): void;
setPosition(position: LatLng): void;
setZIndex(zIndex: number): void;
}
export interface InfoWindowOptions {
/**
* Content to display in the InfoWindow. This can be an HTML element, a plain-text string, or a string containing HTML.
* The InfoWindow will be sized according to the content.
* To set an explicit size for the content, set content to be a HTML element with that size.
* @type {(string|Node)}
*/
content?: string|Node;
/**
* Disable auto-pan on open. By default, the info window will pan the map so that it is fully visible when it opens.
*/
disableAutoPan?: boolean;
/**
* Maximum width of the infowindow, regardless of content's width.
* This value is only considered if it is set before a call to open.
* To change the maximum width when changing content, call close, setOptions, and then open.
*/
maxWidth?: number;
/**
* The offset, in pixels, of the tip of the info window from the point on the map
* at whose geographical coordinates the info window is anchored.
* If an InfoWindow is opened with an anchor, the pixelOffset will be calculated from the anchor's anchorPoint property.
*/
pixelOffset?: Size;
/**
* The LatLng at which to display this InfoWindow. If the InfoWindow is opened with an anchor, the anchor's position will be used instead.
*/
position?: LatLng|LatLngLiteral;
/**
* All InfoWindows are displayed on the map in order of their zIndex,
* with higher values displaying in front of InfoWindows with lower values.
* By default, InfoWindows are displayed according to their latitude,
* with InfoWindows of lower latitudes appearing in front of InfoWindows at higher latitudes.
* InfoWindows are always displayed in front of markers.
*/
zIndex?: number;
}
export class Polyline extends MVCObject {
constructor(opts?: PolylineOptions);
getDraggable(): boolean;
getEditable(): boolean;
getMap(): Map;
getPath(): MVCArray; // MVCArray<LatLng>
getVisible(): boolean;
setDraggable(draggable: boolean): void;
setEditable(editable: boolean): void;
setMap(map: Map): void;
setOptions(options: PolylineOptions): void;
setPath(path: MVCArray|LatLng[]|LatLngLiteral[]): void; // MVCArray<LatLng>|Array<LatLng|LatLngLiteral>
setVisible(visible: boolean): void;
}
export interface PolylineOptions {
clickable?: boolean;
draggable?: boolean;
editable?: boolean;
geodesic?: boolean;
icons?: IconSequence[];
map?: Map;
path?: MVCArray|LatLng[]|LatLngLiteral[]; // MVCArray<LatLng>|Array<LatLng|LatLngLiteral>
strokeColor?: string;
strokeOpacity?: number;
strokeWeight?: number;
visible?: boolean;
zIndex?: number;
}
export interface IconSequence {
fixedRotation?: boolean;
icon?: Symbol;
offset?: string;
repeat?: string;
}
export class Polygon extends MVCObject {
constructor(opts?: PolygonOptions);
getDraggable(): boolean;
getEditable(): boolean;
getMap(): Map;
getPath(): MVCArray; // MVCArray<LatLng>
getPaths(): MVCArray; // MVCArray<MVCArray<LatLng>>
getVisible(): boolean;
setDraggable(draggable: boolean): void;
setEditable(editable: boolean): void;
setMap(map: Map): void;
setOptions(options: PolygonOptions): void;
setPath(path: MVCArray|LatLng[]|LatLngLiteral[]): void;
setPaths(paths: MVCArray): void;
setPaths(paths: MVCArray[]): void;
setPaths(path: LatLng[]): void;
setPaths(path: LatLng[][]): void;
setPaths(path: LatLngLiteral[]): void;
setPaths(path: LatLngLiteral[][]): void;
setVisible(visible: boolean): void;
}
export interface PolygonOptions {
/** Indicates whether this Polygon handles mouse events. Defaults to true. */
clickable?: boolean;
/**
* If set to true, the user can drag this shape over the map.
* The geodesic property defines the mode of dragging. Defaults to false.
*/
draggable?: boolean;
/**
* If set to true, the user can edit this shape by dragging the control points
* shown at the vertices and on each segment. Defaults to false.
*/
editable?: boolean;
/** The fill color. All CSS3 colors are supported except for extended named colors. */
fillColor?: string;
/** The fill opacity between 0.0 and 1.0 */
fillOpacity?: number;
/**
* When true, edges of the polygon are interpreted as geodesic and will follow
* the curvature of the Earth. When false, edges of the polygon are rendered as
* straight lines in screen space. Note that the shape of a geodesic polygon may
* appear to change when dragged, as the dimensions are maintained relative to
* the surface of the earth. Defaults to false.
*/
geodesic?: boolean;
/** Map on which to display Polygon. */
map?: Map;
/**
* The ordered sequence of coordinates that designates a closed loop. Unlike
* polylines, a polygon may consist of one or more paths. As a result, the paths
* property may specify one or more arrays of LatLng coordinates. Paths are
* closed automatically; do not repeat the first vertex of the path as the last
* vertex. Simple polygons may be defined using a single array of LatLngs. More
* complex polygons may specify an array of arrays. Any simple arrays are
* converted into MVCArrays. Inserting or removing LatLngs from the MVCArray
* will automatically update the polygon on the map.
*/
paths?: any[]; // MVCArray<MVCArray<LatLng>>|MVCArray<LatLng>|Array<Array<LatLng|LatLngLiteral>>|Array<LatLng|LatLngLiteral>
/**
* The stroke color.
* All CSS3 colors are supported except for extended named colors.
*/
strokeColor?: string;
/** The stroke opacity between 0.0 and 1.0 */
strokeOpacity?: number;
/**
* The stroke position. Defaults to CENTER.
* This property is not supported on Internet Explorer 8 and earlier.
*/
strokePosition?: StrokePosition;
/** The stroke width in pixels. */
strokeWeight?: number;
/** Whether this polygon is visible on the map. Defaults to true. */
visible?: boolean;
/** The zIndex compared to other polys. */
zIndex?: number;
}
export interface PolyMouseEvent {
edge?: number;
path?: number;
vertex?: number;
}
export class Rectangle extends MVCObject {
constructor(opts?: RectangleOptions);
getBounds(): LatLngBounds;
getDraggable(): boolean;
getEditable(): boolean;
getMap(): Map;
getVisible(): boolean;
setBounds(bounds: LatLngBounds): void;
setDraggable(draggable: boolean): void;
setEditable(editable: boolean): void;
setMap(map: Map): void;
setOptions(options: RectangleOptions): void;
setVisible(visible: boolean): void;
}
export interface RectangleOptions {
bounds?: LatLngBounds;
clickable?: boolean;
draggable?: boolean;
editable?: boolean;
fillColor?: string;
fillOpacity?: number;
map?: Map;
strokeColor?: string;
strokeOpacity?: number;
strokePosition?: StrokePosition;
strokeWeight?: number;
visible?: boolean;
zIndex?: number;
}
export class Circle extends MVCObject {
constructor(opts?: CircleOptions);
getBounds(): LatLngBounds;
getCenter(): LatLng;
getDraggable(): boolean;
getEditable(): boolean;
getMap(): Map;
getRadius(): number;
getVisible(): boolean;
setCenter(center: LatLng|LatLngLiteral): void;
setDraggable(draggable: boolean): void;
setEditable(editable: boolean): void;
setMap(map: Map): void;
setOptions(options: CircleOptions): void;
setRadius(radius: number): void;
setVisible(visible: boolean): void;
}
export interface CircleOptions {
center?: LatLng;
clickable?: boolean;
draggable?: boolean;
editable?: boolean;
fillColor?: string;
fillOpacity?: number;
map?: Map;
radius?: number;
strokeColor?: string;
strokeOpacity?: number;
strokePosition?: StrokePosition;
strokeWeight?: number;
visible?: boolean;
zIndex?: number;
}
/**
* The possible positions of the stroke on a polygon.
*/
export enum StrokePosition {
/**
* The stroke is centered on the polygon's path, with half the stroke inside
* the polygon and half the stroke outside the polygon.
*/
CENTER,
/** The stroke lies inside the polygon. */
INSIDE,
/** The stroke lies outside the polygon. */
OUTSIDE
}
export class GroundOverlay extends MVCObject {
constructor(url: string, bounds: LatLngBounds, opts?: GroundOverlayOptions);
getBounds(): LatLngBounds;
getMap(): Map;
getOpacity(): number;
getUrl(): string;
setMap(map: Map): void;
setOpacity(opacity: number): void;
}
export interface GroundOverlayOptions {
clickable?: boolean;
map?: Map;
opacity?: number;
}
export class OverlayView extends MVCObject {
draw(): void;
getMap(): Map|StreetViewPanorama;
getPanes(): MapPanes;
getProjection(): MapCanvasProjection;
onAdd(): void;
onRemove(): void;
setMap(map: Map|StreetViewPanorama): void;
}
export interface MapPanes {
floatPane: Element;
mapPane: Element;
markerLayer: Element;
overlayLayer: Element;
overlayMouseTarget: Element;
}
export class MapCanvasProjection extends MVCObject {
fromContainerPixelToLatLng(pixel: Point, nowrap?: boolean): LatLng;
fromDivPixelToLatLng(pixel: Point, nowrap?: boolean): LatLng;
fromLatLngToContainerPixel(latLng: LatLng): Point;
fromLatLngToDivPixel(latLng: LatLng): Point;
getWorldWidth(): number;
}
/***** Services *****/
export class Geocoder {
geocode(request: GeocoderRequest, callback: (results: GeocoderResult[], status: GeocoderStatus) => void ): void;
}
export interface GeocoderRequest {
address?: string;
bounds?: LatLngBounds;
componentRestrictions?: GeocoderComponentRestrictions;
location?: LatLng|LatLngLiteral;
placeId?: string;
region?: string;
}
export interface GeocoderComponentRestrictions {
administrativeArea?: string;
country?: string;
locality?: string;
postalCode?: string;
route?: string;
}
export enum GeocoderStatus {
ERROR,
INVALID_REQUEST,
OK,
OVER_QUERY_LIMIT,
REQUEST_DENIED,
UNKNOWN_ERROR,
ZERO_RESULTS
}
export interface GeocoderResult {
address_components: GeocoderAddressComponent[];
formatted_address: string;
geometry: GeocoderGeometry;
partial_match: boolean;
postcode_localities: string[];
types: string[];
}
export interface GeocoderAddressComponent {
long_name: string;
short_name: string;
types: string[];
}
export interface GeocoderGeometry {
bounds: LatLngBounds;
location: LatLng;
location_type: GeocoderLocationType;
viewport: LatLngBounds;
}
export enum GeocoderLocationType {
APPROXIMATE,
GEOMETRIC_CENTER,
RANGE_INTERPOLATED,
ROOFTOP
}
export class DirectionsRenderer extends MVCObject {
constructor(opts?: DirectionsRendererOptions);
getDirections(): DirectionsResult;
getMap(): Map;
getPanel(): Element;
getRouteIndex(): number;
setDirections(directions: DirectionsResult): void;
setMap(map: Map): void;
setOptions(options: DirectionsRendererOptions): void;
setPanel(panel: Element): void;
setRouteIndex(routeIndex: number): void;
}
export interface DirectionsRendererOptions {
directions?: DirectionsResult;
draggable?: boolean;
hideRouteList?: boolean;
infoWindow?: InfoWindow;
map?: Map;
markerOptions?: MarkerOptions;
panel?: Element;
polylineOptions?: PolylineOptions;
preserveViewport?: boolean;
routeIndex?: number;
suppressBicyclingLayer?: boolean;
suppressInfoWindows?: boolean;
suppressMarkers?: boolean;
suppressPolylines?: boolean;
}
export class DirectionsService {
route(request: DirectionsRequest, callback: (result: DirectionsResult, status: DirectionsStatus) => void ): void;
}
export interface DirectionsRequest {
avoidFerries?: boolean;
avoidHighways?: boolean;
avoidTolls?: boolean;
destination?: LatLng|LatLngLiteral|string;
durationInTraffic?: boolean;
optimizeWaypoints?: boolean;
origin?: LatLng|LatLngLiteral|string;
provideRouteAlternatives?: boolean;
region?: string;
transitOptions?: TransitOptions;
travelMode?: TravelMode;
unitSystem?: UnitSystem;
waypoints?: DirectionsWaypoint[];
}
export enum TravelMode {
BICYCLING,
DRIVING,
TRANSIT,
WALKING
}
export enum UnitSystem {
IMPERIAL,
METRIC
}
export interface TransitOptions {
arrivalTime?: Date;
departureTime?: Date;
modes: TransitMode[];
routingPreference: TransitRoutePreference;
}
export enum TransitMode {
BUS,
RAIL,
SUBWAY,
TRAIN,
TRAM
}
export enum TransitRoutePreference
{
FEWER_TRANSFERS,
LESS_WALKING
}
export interface TransitFare { }
export interface DirectionsWaypoint {
location: LatLng|LatLngLiteral|string;
stopover: boolean;
}
export enum DirectionsStatus {
INVALID_REQUEST,
MAX_WAYPOINTS_EXCEEDED,
NOT_FOUND,
OK,
OVER_QUERY_LIMIT,
REQUEST_DENIED,
UNKNOWN_ERROR,
ZERO_RESULTS
}
export interface DirectionsResult {
routes: DirectionsRoute[];
}
export interface DirectionsRoute {
bounds: LatLngBounds;
copyrights: string;
fare: TransitFare;
legs: DirectionsLeg[];
overview_path: LatLng[];
overview_polyline: string;
warnings: string[];
waypoint_order: number[];
}
export interface DirectionsLeg {
arrival_time: Time;
departure_time: Time;
distance: Distance;
duration: Duration;
duration_in_traffic: Duration;
end_address: string;
end_location: LatLng;
start_address: string;
start_location: LatLng;
steps: DirectionsStep[];
via_waypoints: LatLng[];
}
export interface DirectionsStep {
distance: Distance;
duration: Duration;
end_location: LatLng;
instructions: string;
path: LatLng[];
start_location: LatLng;
steps: DirectionsStep;
transit: TransitDetails;
travel_mode: TravelMode;
}
export interface Distance {
text: string;
value: number;
}
export interface Duration {
text: string;
value: number;
}
export interface Time {
text: string;
time_zone: string;
value: Date;
}
export interface TransitDetails {
arrival_stop: TransitStop;
arrival_time: Time;
departure_stop: TransitStop;
departure_time: Time;
headsign: string;
headway: number;
line: TransitLine;
num_stops: number;
}
export interface TransitStop {
location: LatLng;
name: string;
}
export interface TransitLine {
agencies: TransitAgency[];
color: string;
icon: string;
name: string;
short_name: string;
text_color: string;
url: string;
vehicle: TransitVehicle;
}
export interface TransitAgency {
name: string;
phone: string;
url: string;
}
export interface TransitVehicle {
icon: string;
local_icon: string;
name: string;
type: VehicleType;
}
export enum VehicleType
{
BUS,
CABLE_CAR,
COMMUTER_TRAIN,
FERRY,
FUNICULAR,
GONDOLA_LIFT,
HEAVY_RAIL,
HIGH_SPEED_TRAIN,
INTERCITY_BUS,
METRO_RAIL,
MONORAIL,
OTHER,
RAIL,
SHARE_TAXI,
SUBWAY,
TRAM,
TROLLEYBUS
}
export class ElevationService {
getElevationAlongPath(request: PathElevationRequest, callback: (results: ElevationResult[], status: ElevationStatus) => void ): void;
getElevationForLocations(request: LocationElevationRequest, callback: (results: ElevationResult[], status: ElevationStatus) => void ): void;
}
export interface LocationElevationRequest {
locations: LatLng[];
}
export interface PathElevationRequest {
path?: LatLng[];
samples?: number;
}
export interface ElevationResult {
elevation: number;
location: LatLng;
resolution: number;
}
export enum ElevationStatus {
INVALID_REQUEST,
OK,
OVER_QUERY_LIMIT,
REQUEST_DENIED,
UNKNOWN_ERROR
}
export class MaxZoomService {
getMaxZoomAtLatLng(latlng: LatLng|LatLngLiteral, callback: (result: MaxZoomResult) => void ): void;
}
export interface MaxZoomResult {
status: MaxZoomStatus;
zoom: number;
}
export enum MaxZoomStatus {
ERROR,
OK
}
export class DistanceMatrixService {
getDistanceMatrix(request: DistanceMatrixRequest, callback: (response: DistanceMatrixResponse, status: DistanceMatrixStatus) => void ): void;
}
export interface DistanceMatrixRequest {
avoidFerries?: boolean;
avoidHighways?: boolean;
avoidTolls?: boolean;
destinations?: LatLng[]|string[];
durationInTraffic?: boolean;
origins?: LatLng[]|string[];
region?: string;
transitOptions?: TransitOptions;
travelMode?: TravelMode;
unitSystem?: UnitSystem;
}
export interface DistanceMatrixResponse {
destinationAddresses: string[];
originAddresses: string[];
rows: DistanceMatrixResponseRow[];
}
export interface DistanceMatrixResponseRow {
elements: DistanceMatrixResponseElement[];
}
export interface DistanceMatrixResponseElement {
distance: Distance;
duration: Duration;
fare: TransitFare;
status: DistanceMatrixElementStatus;
}
export enum DistanceMatrixStatus {
INVALID_REQUEST,
MAX_DIMENSIONS_EXCEEDED,
MAX_ELEMENTS_EXCEEDED,
OK,
OVER_QUERY_LIMIT,
REQUEST_DENIED,
UNKNOWN_ERROR
}
export enum DistanceMatrixElementStatus {
NOT_FOUND,
OK,
ZERO_RESULTS
}
/***** Save to Google Maps *****/
export interface Attribution {
iosDeepLinkId?: string;
source?: string;
webUrl?: string;
}
export interface Place {
location?: LatLng|LatLngLiteral;
placeId?: string;
query?: string;
}
export class SaveWidget {
constructor(container: Node, opts?: SaveWidgetOptions);
getAttribution(): Attribution;
getPlace(): Place;
setAttribution(attribution: Attribution): void;
setOptions(opts: SaveWidgetOptions): void;
setPlace(place: Place): void;
}
export interface SaveWidgetOptions{
attribution?: Attribution;
place?: Place;
}
/***** Map Types *****/
export interface MapType {
getTile(tileCoord: Point, zoom: number, ownerDocument: Document): Element;
releaseTile(tile: Element): void;
alt?: string;
maxZoom?: number;
minZoom?: number;
name?: string;
projection?: Projection;
radius?: number;
tileSize?: Size;
}
export class MapTypeRegistry extends MVCObject {
constructor();
set(id: string, mapType: MapType): void;
}
export interface Projection {
fromLatLngToPoint(latLng: LatLng, point?: Point): Point;
fromPointToLatLng(pixel: Point, noWrap?: boolean): LatLng;
}
export class ImageMapType extends MVCObject implements MapType {
constructor(opts: ImageMapTypeOptions);
getOpacity(): number;
getTile(tileCoord: Point, zoom: number, ownerDocument: Document): Element;
releaseTile(tile: Element): void;
setOpacity(opacity: number): void;
}
export interface ImageMapTypeOptions {
alt?: string;
getTileUrl(tileCoord: Point, zoom: number): string;
maxZoom?: number;
minZoom?: number;
name?: string;
opacity?: number;
tileSize?: Size;
}
export class StyledMapType extends MVCObject implements MapType {
constructor(styles: MapTypeStyle[], options?: StyledMapTypeOptions);
getTile(tileCoord: Point, zoom: number, ownerDocument: Document): Element;
releaseTile(tile: Element): void;
}
export interface StyledMapTypeOptions {
alt?: string;
maxZoom?: number;
minZoom?: number;
name?: string;
}
export interface MapTypeStyle {
elementType?: MapTypeStyleElementType;
featureType?: MapTypeStyleFeatureType;
stylers?: MapTypeStyler[];
}
export interface MapTypeStyleFeatureType {
administrative?: {
country?: string;
land_parcel?: string;
locality?: string;
neighborhood?: string;
province?: string;
};
all?: string;
landscape?: {
man_made?: string;
natural?: {
landcover?: string;
terrain?: string;
};
};
poi?: {
attraction?: string;
business?: string;
government?: string;
medical?: string;
park?: string;
place_of_worship?: string;
school?: string;
sports_complex?: string;
};
road?: {
arterial?: string;
highway?: {
controlled_access?: string;
};
local?: string;
};
transit?: {
line?: string;
station?: {
airport?: string;
bus?: string;
rail?: string;
};
};
water?: string;
}
export interface MapTypeStyleElementType {
all?: string;
geometry?: {
fill?: string;
stroke?: string;
};
labels?: {
icon?: string;
text?: {
fill?: string;
stroke?: string;
}
};
}
export interface MapTypeStyler {
color?: string;
gamma?: number;
hue?: string;
invert_lightness?: boolean;
lightness?: number;
saturation?: number;
visibility?: string;
weight?: number;
}
/***** Layers *****/
export class BicyclingLayer extends MVCObject {
constructor();
getMap(): Map;
setMap(map: Map): void;
}
export class FusionTablesLayer extends MVCObject {
constructor(options: FusionTablesLayerOptions);
getMap(): Map;
setMap(map: Map): void;
setOptions(options: FusionTablesLayerOptions): void;
}
export interface FusionTablesLayerOptions {
clickable?: boolean;
heatmap?: FusionTablesHeatmap;
map?: Map;
query?: FusionTablesQuery;
styles?: FusionTablesStyle[];
suppressInfoWindows?: boolean;
}
export interface FusionTablesQuery {
from?: string;
limit?: number;
offset?: number;
orderBy?: string;
select?: string;
where?: string;
}
export interface FusionTablesStyle {
markerOptions?: FusionTablesMarkerOptions;
polygonOptions?: FusionTablesPolygonOptions;
polylineOptions?: FusionTablesPolylineOptions;
where?: string;
}
export interface FusionTablesHeatmap {
enabled: boolean;
}
export interface FusionTablesMarkerOptions {
iconName: string;
}
export interface FusionTablesPolygonOptions {
fillColor?: string;
fillOpacity?: number;
strokeColor?: string;
strokeOpacity?: number;
strokeWeight?: number;
}
export interface FusionTablesPolylineOptions {
strokeColor?: string;
strokeOpacity?: number;
strokeWeight?: number;
}
export interface FusionTablesMouseEvent {
infoWindowHtml?: string;
latLng?: LatLng;
pixelOffset?: Size;
row?: Object; // Object<FusionTablesCell>
}
export interface FusionTablesCell {
columnName?: string;
value?: string;
}
export class KmlLayer extends MVCObject {
constructor(opts?: KmlLayerOptions);
getDefaultViewport(): LatLngBounds;
getMap(): Map;
getMetadata(): KmlLayerMetadata;
getStatus(): KmlLayerStatus;
getUrl(): string;
getZIndex(): number;
setMap(map: Map): void;
setUrl(url: string): void;
setZIndez(zIndex: number): void;
}
export interface KmlLayerOptions {
clickable?: boolean;
map?: Map;
preserveViewport?: boolean;
screenOverlays?: boolean;
suppressInfoWindows?: boolean;
url?: string;
zIndex?: number;
}
export interface KmlLayerMetadata {
author: KmlAuthor;
description: string;
hasScreenOverlays: boolean;
name: string;
snippet: string;
}
export enum KmlLayerStatus {
DOCUMENT_NOT_FOUND,
DOCUMENT_TOO_LARGE,
FETCH_ERROR,
INVALID_DOCUMENT,
INVALID_REQUEST,
LIMITS_EXCEEDED,
OK,
TIMED_OUT,
UNKNOWN
}
export interface KmlMouseEvent {
featureData: KmlFeatureData;
latLng: LatLng;
pixelOffset: Size;
}
export interface KmlFeatureData {
author: KmlAuthor;
description: string;
id: string;
infoWindowHtml: string;
name: string;
snippet: string;
}
export interface KmlAuthor {
email: string;
name: string;
uri: string;
}
export class TrafficLayer extends MVCObject {
constructor();
getMap(): void;
setMap(map: Map): void;
}
export class TransitLayer extends MVCObject {
constructor();
getMap(): void;
setMap(map: Map): void;
}
/***** Street View *****/
export class StreetViewPanorama {
constructor(container: Element, opts?: StreetViewPanoramaOptions);
controls: MVCArray[]; // Array<MVCArray<Node>>
getLinks(): StreetViewLink[];
getLocation(): StreetViewLocation;
getPano(): string;
getPhotographerPov(): StreetViewPov;
getPosition(): LatLng;
getPov(): StreetViewPov;
getStatus(): StreetViewStatus;
getVisible(): boolean;
getZoom(): number;
registerPanoProvider(provider: (input: string) => StreetViewPanoramaData): void;
setLinks(links: Array<StreetViewLink>): void;
setOptions(options: StreetViewPanoramaOptions): void;
setPano(pano: string): void;
setPosition(latLng: LatLng|LatLngLiteral): void;
setPov(pov: StreetViewPov): void;
setVisible(flag: boolean): void;
setZoom(zoom: number): void;
}
export interface StreetViewPanoramaOptions {
addressControl?: boolean;
addressControlOptions?: StreetViewAddressControlOptions;
clickToGo?: boolean;
disableDefaultUi?: boolean;
disableDoubleClickZoom?: boolean;
enableCloseButton?: boolean;
imageDateControl?: boolean;
linksControl?: boolean;
panControl?: boolean;
panControlOptions?: PanControlOptions;
pano?: string;
panoProvider?: (input: string) => StreetViewPanoramaData;
position?: LatLng|LatLngLiteral;
pov?: StreetViewPov;
scrollwheel?: boolean;
visible?: boolean;
zoomControl?: boolean;
zoomControlOptions?: ZoomControlOptions;
}
export interface StreetViewAddressControlOptions {
position?: ControlPosition;
}
export interface StreetViewLink {
description?: string;
heading?: number;
pano?: string;
}
export interface StreetViewPov {
heading?: number;
pitch?: number;
}
export interface StreetViewPanoramaData {
copyright?: string;
imageDate?: string;
links?: StreetViewLink[];
location?: StreetViewLocation;
tiles?: StreetViewTileData;
}
export interface StreetViewLocation {
description?: string;
latLng?: LatLng;
pano?: string;
shortDescription?: string;
}
export interface StreetViewTileData {
getTileUrl(pano: string, tileZoom: number, tileX: number, tileY: number): string;
centerHeading?: number;
tileSize?: Size;
worldSize?: Size;
}
export class StreetViewService {
getPanoramaById(pano: string, callback: (streetViewPanoramaData: StreetViewPanoramaData, streetViewStatus: StreetViewStatus) => void): void;
getPanoramaByLocation(latlng: LatLng|LatLngLiteral, radius: number, callback: (streetViewPanoramaData: StreetViewPanoramaData, streetViewStatus: StreetViewStatus) => void ): void;
}
export enum StreetViewStatus {
OK,
UNKNOWN_ERROR,
ZERO_RESULTS
}
export class StreetViewCoverageLayer extends MVCObject {
getMap(): Map;
setMap(map: Map): void;
}
/***** Events *****/
export interface MapsEventListener {
/** Removes the listener. Equivalent to calling google.maps.event.removeListener(listener). */
remove(): void;
}
export class event {
/**
* Cross browser event handler registration. This listener is removed by calling
* removeListener(handle) for the handle that is returned by this function.
*/
static addDomListener(instance: Object, eventName: string, handler: Function, capture?: boolean): MapsEventListener;
/**
* Wrapper around addDomListener that removes the listener after the first event.
*/
static addDomListenerOnce(instance: Object, eventName: string, handler: Function, capture?: boolean): MapsEventListener;
/**
* Adds the given listener function to the given event name for the given object
* instance. Returns an identifier for this listener that can be used with
* removeListener().
*/
static addListener(instance: Object, eventName: string, handler: Function): MapsEventListener;
/**
* Like addListener, but the handler removes itself after handling the first event.
*/
static addListenerOnce(instance: Object, eventName: string, handler: Function): MapsEventListener;
/**
* Removes all listeners for all events for the given instance.
*/
static clearInstanceListeners(instance: Object): void;
/**
* Removes all listeners for the given event for the given instance.
*/
static clearListeners(instance: Object, eventName: string): void;
/**
* Removes the given listener, which should have been returned by addListener above.
* Equivalent to calling listener.remove().
*/
static removeListener(listener: MapsEventListener): void;
/**
* Triggers the given event. All arguments after eventName are passed as arguments to
* the listeners.
*/
static trigger(instance: any, eventName: string, ...args: any[]): void;
}
export interface MouseEvent {
stop(): void;
latLng: LatLng;
}
/* **** Base **** */
/**
* A LatLng is a point in geographical coordinates: latitude and longitude.
*
* * Latitude ranges between -90 and 90 degrees, inclusive. Values above or
* below this range will be clamped to the range [-90, 90]. This means
* that if the value specified is less than -90, it will be set to -90.
* And if the value is greater than 90, it will be set to 90.
* * Longitude ranges between -180 and 180 degrees, inclusive. Values above
* or below this range will be wrapped so that they fall within the
* range. For example, a value of -190 will be converted to 170. A value
* of 190 will be converted to -170. This reflects the fact that
* longitudes wrap around the globe.
*
* Although the default map projection associates longitude with the
* x-coordinate of the map, and latitude with the y-coordinate, the
* latitude coordinate is always written first, followed by the longitude.
* Notice that you cannot modify the coordinates of a LatLng. If you want
* to compute another point, you have to create a new one.
*/
export class LatLng {
/**
* Creates a LatLng object representing a geographic point.
* Note the ordering of latitude and longitude.
* @param lat Latitude is specified in degrees within the range [-90, 90].
* @param lng Longitude is specified in degrees within the range [-180, 180].
* @param noWrap Set noWrap to true to enable values outside of this range.
*/
constructor(lat: number, lng: number, noWrap?: boolean);
/** Comparison function. */
equals(other: LatLng): boolean;
/** Returns the latitude in degrees. */
lat(): number;
/** Returns the longitude in degrees. */
lng(): number;
/** Converts to string representation. */
toString(): string;
/** Returns a string of the form "lat,lng". We round the lat/lng values to 6 decimal places by default. */
toUrlValue(precision?: number): string;
}
export type LatLngLiteral = { lat: number; lng: number }
export class LatLngBounds {
constructor(sw?: LatLng, ne?: LatLng);
contains(latLng: LatLng): boolean;
equals(other: LatLngBounds): boolean;
extend(point: LatLng): LatLngBounds;
getCenter(): LatLng;
getNorthEast(): LatLng;
getSouthWest(): LatLng;
intersects(other: LatLngBounds): boolean;
isEmpty(): boolean;
toSpan(): LatLng;
toString(): string;
toUrlValue(precision?: number): string;
union(other: LatLngBounds): LatLngBounds;
}
export class Point {
/** A point on a two-dimensional plane. */
constructor(x: number, y: number);
/** The X coordinate */
x: number;
/** The Y coordinate */
y: number;
/** Compares two Points */
equals(other: Point): boolean;
/** Returns a string representation of this Point. */
toString(): string;
}
export class Size {
constructor(width: number, height: number, widthUnit?: string, heightUnit?: string);
height: number;
width: number;
equals(other: Size): boolean;
toString(): string;
}
/***** MVC *****/
export class MVCObject {
constructor();
addListener(eventName: string, handler: (...args: any[]) => void): MapsEventListener;
bindTo(key: string, target: MVCObject, targetKey?: string, noNotify?: boolean): void;
changed(key: string): void;
get(key: string): any;
notify(key: string): void;
set(key: string, value: any): void;
setValues(values: any): void;
unbind(key: string): void;
unbindAll(): void;
}
export class MVCArray extends MVCObject {
constructor(array?: any[]);
clear(): void;
forEach(callback: (elem: any, i: number) => void): void;
getArray(): any[];
getAt(i: number): any;
getLength(): number;
insertAt(i: number, elem: any): void;
pop(): any;
push(elem: any): number;
removeAt(i: number): any;
setAt(i: number, elem: any): void;
}
/***** Geometry Library *****/
export module geometry {
export class encoding {
static decodePath(encodedPath: string): LatLng[];
static encodePath(path: any[]): string; // LatLng[]|MVCArray<LatLng>
}
/**
* Utility functions for computing geodesic angles, distances and areas.
* The default radius is Earth's radius of 6378137 meters.
*/
export class spherical {
/**
* Returns the area of a closed path.
* The computed area uses the same units as the radius.
* The radius defaults to the Earth's radius in meters,
* in which case the area is in square meters.
*/
static computeArea(path: any[], radius?: number): number; // LatLng[]|MVCArray<LatLng>
/**
* Returns the distance, in meters, between two LatLngs.
* You can optionally specify a custom radius.
* The radius defaults to the radius of the Earth.
*/
static computeDistanceBetween(from: LatLng, to: LatLng, radius?: number): number;
/**
* Returns the heading from one LatLng to another LatLng.
* Headings are expressed in degrees clockwise from North within the range [-180,180).
*/
static computeHeading(from: LatLng, to: LatLng): number;
/**
* Returns the length of the given path.
*/
static computeLength(path: any[], radius?: number): number; // LatLng[]|MVCArray<LatLng>
/**
* Returns the LatLng resulting from moving a distance from an origin in the
* specified heading (expressed in degrees clockwise from north).
*/
static computeOffset(from: LatLng, distance: number, heading: number, radius?: number): LatLng;
/**
* Returns the location of origin when provided with a LatLng destination, meters
* travelled and original heading. Headings are expressed in degrees clockwise from
* North. This function returns null when no solution is available.
*/
static computeOffsetOrigin(to: LatLng, distance: number, heading: number, radius?: number): LatLng;
/**
* Returns the signed area of a closed path. The signed area may be used to determine
* the orientation of the path. The computed area uses the same units as the radius.
* The radius defaults to the Earth's radius in meters, in which case the area is in
* square meters.
*/
static computeSignedArea(loop: any[], radius?: number): number; // LatLng[]|MVCArray<LatLng>
/**
* Returns the LatLng which lies the given fraction of the way between the origin
* LatLng and the destination LatLng.
*/
static interpolate(from: LatLng, to: LatLng, fraction: number): LatLng;
}
export class poly {
static containsLocation(point: LatLng, polygon: Polygon): boolean;
static isLocationOnEdge(point: LatLng, poly: Polygon|Polyline, tolerance?: number): boolean;
}
}
/***** AdSense Library *****/
export module adsense {
export class AdUnit extends MVCObject {
constructor(container: Element, opts: AdUnitOptions);
getBackgroundColor(): string;
getBorderColor(): string;
getChannelNumber(): string;
getContainer(): Element;
getFormat(): AdFormat;
getMap(): Map;
getPosition(): ControlPosition;
getPublisherId(): string;
getTextColor(): string;
getTitleColor(): string;
getUrlColor(): string;
setBackgroundColor(backgroundColor: string): void;
setBorderColor(borderColor: string): void;
setChannelNumber(channelNumber: string): void;
setFormat(format: AdFormat): void;
setMap(map: Map): void;
setPosition(position: ControlPosition): void;
setTextColor(textColor: string): void;
setTitleColor(titleColor: string): void;
setUrlColor(urlColor: string): void;
}
export interface AdUnitOptions {
backgroundColor?: string;
borderColor?: string;
channelNumber?: string;
format?: AdFormat;
map?: Map;
position?: ControlPosition;
publisherId?: string;
textColor?: string;
titleColor?: string;
urlColor?: string;
}
export enum AdFormat {
BANNER,
BUTTON,
HALF_BANNER,
LARGE_HORIZONTAL_LINK_UNIT,
LARGE_RECTANGLE,
LARGE_VERTICAL_LINK_UNIT,
LEADERBOARD,
MEDIUM_RECTANGLE,
MEDIUM_VERTICAL_LINK_UNIT,
SKYSCRAPER,
SMALL_HORIZONTAL_LINK_UNIT,
SMALL_RECTANGLE,
SMALL_SQUARE,
SMALL_VERTICAL_LINK_UNIT,
SQUARE,
VERTICAL_BANNER,
WIDE_SKYSCRAPER,
X_LARGE_VERTICAL_LINK_UNIT
}
}
/***** Places Library *****/
export module places {
export class Autocomplete extends MVCObject {
constructor(inputField: HTMLInputElement, opts?: AutocompleteOptions);
getBounds(): LatLngBounds;
getPlace(): PlaceResult;
setBounds(bounds: LatLngBounds): void;
setComponentRestrictions(restrictions: ComponentRestrictions): void;
setTypes(types: string[]): void;
}
export interface AutocompleteOptions {
bounds?: LatLngBounds;
componentRestrictions?: ComponentRestrictions;
types?: string[];
}
export interface AutocompletePrediction {
description: string;
matched_substrings: PredictionSubstring[];
place_id: string;
terms: PredictionTerm[];
types: string[];
}
export interface PredictionTerm {
offset: number;
value: string;
}
export interface PredictionSubstring {
length: number;
offset: number;
}
export class AutocompleteService {
constructor();
getPlacePredictions(request: AutocompletionRequest, callback: (result: AutocompletePrediction[], status: PlacesServiceStatus) => void): void;
getQueryPredictions(request: QueryAutocompletionRequest, callback: (result: QueryAutocompletePrediction[], status: PlacesServiceStatus) => void): void;
}
export interface AutocompletionRequest {
bounds?: LatLngBounds;
componentRestrictions?: ComponentRestrictions;
input: string;
location?: LatLng;
offset?: number;
radius?: number;
types?: string[];
}
export interface ComponentRestrictions {
country: string;
}
export interface PlaceAspectRating {
rating: number;
type: string;
}
export interface PlaceDetailsRequest {
placeId: string;
}
export interface PlaceGeometry {
location: LatLng;
viewport: LatLngBounds;
}
export interface PlacePhoto {
height: number;
html_attributions: string[];
width: number;
getUrl(opts: PhotoOptions): string;
}
export interface PhotoOptions {
maxHeight?: number;
maxWidth?: number;
}
export interface PlaceResult {
address_components: GeocoderAddressComponent[];
aspects: PlaceAspectRating[];
formatted_address: string;
formatted_phone_number: string;
geometry: PlaceGeometry;
html_attributions: string[];
icon: string;
international_phone_number: string;
name: string;
permanently_closed: boolean;
photos: PlacePhoto[];
place_id: string;
price_level: number;
rating: number;
reviews: PlaceReview[];
types: string[];
url: string;
vicinity: string;
website: string;
}
export interface PlaceReview {
aspects: PlaceAspectRating[];
author_name: string;
author_url: string;
language: string;
text: string;
}
export interface PlaceSearchPagination {
nextPage(): void;
hasNextPage: boolean;
}
export interface PlaceSearchRequest {
bounds?: LatLngBounds;
keyword?: string;
location?: LatLng|LatLngLiteral;
maxPriceLevel?: number;
minPriceLevel?: number;
name?: string;
openNow?: boolean;
radius?: number;
rankBy?: RankBy;
types?: string[];
}
export class PlacesService {
constructor(attrContainer: HTMLDivElement|Map);
getDetails(request: PlaceDetailsRequest, callback: (result: PlaceResult, status: PlacesServiceStatus) => void): void;
nearbySearch(request: PlaceSearchRequest, callback: (results: PlaceResult[], status: PlacesServiceStatus, pagination: PlaceSearchPagination) => void): void;
radarSearch(request: RadarSearchRequest, callback: (results: PlaceResult[], status: PlacesServiceStatus) => void): void;
textSearch(request: TextSearchRequest, callback: (results: PlaceResult[], status: PlacesServiceStatus) => void): void;
}
export enum PlacesServiceStatus {
INVALID_REQUEST,
OK,
OVER_QUERY_LIMIT,
REQUEST_DENIED,
UNKNOWN_ERROR,
ZERO_RESULTS
}
export interface QueryAutocompletePrediction {
description: string;
matched_substrings: PredictionSubstring[];
place_id: string;
terms: PredictionTerm[];
}
export interface QueryAutocompletionRequest {
bounds?: LatLngBounds;
input?: string;
location?: LatLng;
offset?: number;
radius?: number;
}
export interface RadarSearchRequest {
bounds?: LatLngBounds;
keyword?: string;
location?: LatLng|LatLngLiteral;
name?: string;
radius?: number;
types?: string[];
}
export enum RankBy {
DISTANCE,
PROMINENCE
}
export class SearchBox extends MVCObject {
constructor(inputField: HTMLInputElement, opts?: SearchBoxOptions);
getBounds(): LatLngBounds;
getPlaces(): PlaceResult[];
setBounds(bounds: LatLngBounds): void;
}
export interface SearchBoxOptions {
bounds: LatLngBounds;
}
export interface TextSearchRequest {
bounds?: LatLngBounds;
location?: LatLng|LatLngLiteral;
query: string;
radius?: number;
types?: string[];
}
}
/***** Drawing Library *****/
export module drawing {
export class DrawingManager extends MVCObject {
constructor(options?: DrawingManagerOptions);
getDrawingMode(): OverlayType;
getMap(): Map;
setDrawingMode(drawingMode: OverlayType): void;
setMap(map: Map): void;
setOptions(options: DrawingManagerOptions): void;
}
export interface DrawingManagerOptions {
circleOptions?: CircleOptions;
drawingControl?: boolean;
drawingControlOptions?: DrawingControlOptions;
drawingMode?: OverlayType;
map?: Map;
markerOptions?: MarkerOptions;
polygonOptions?: PolygonOptions;
polylineOptions?: PolylineOptions;
rectangleOptions?: RectangleOptions;
}
export interface DrawingControlOptions {
drawingModes?: OverlayType[];
position?: ControlPosition;
}
export interface OverlayCompleteEvent {
overlay: Marker|Polygon|Polyline|Rectangle|Circle;
type: OverlayType;
}
export enum OverlayType {
CIRCLE,
MARKER,
POLYGON,
POLYLINE,
RECTANGLE
}
}
/***** Visualization Library *****/
export module visualization {
export class MapsEngineLayer extends MVCObject {
constructor(options: MapsEngineLayerOptions);
getLayerId(): string;
getLayerKey(): string;
getMap(): Map;
getMapId(): string;
getOpacity(): number;
getProperties(): MapsEngineLayerProperties;
getStatus(): MapsEngineStatus;
getZIndex(): number;
setLayerId(layerId: string): void;
setLayerKey(layerKey: string): void;
setMap(map: Map): void;
setMapId(mapId: string): void;
setOpacity(opacity: number): void;
setOptions(options: MapsEngineLayerOptions): void;
setZIndex(zIndex: number): void;
}
export interface MapsEngineLayerOptions {
accessToken?: string;
clickable?: boolean;
fitBounds?: boolean;
layerId?: string;
layerKey?: string;
map?: Map;
mapId?: string;
opacity?: number;
suppressInfoWindows?: boolean;
zIndex?: number;
}
export interface MapsEngineLayerProperties {
name: string;
}
export interface MapsEngineMouseEvent {
featureId?: string;
infoWindowHtml?: string;
latLng?: LatLng;
pixelOffset?: Size;
}
export enum MapsEngineStatus {
INVALID_LAYER,
OK,
UNKNOWN_ERROR
}
export class HeatmapLayer extends MVCObject {
constructor(opts?: HeatmapLayerOptions);
getData(): MVCArray;
getMap(): Map;
setData(data: MVCArray): void;
setData(data: LatLng[]): void;
setData(data: WeightedLocation[]): void;
setMap(map: Map): void;
}
export interface HeatmapLayerOptions {
data: any;
dissipating?: boolean;
gradient?: string[];
map?: Map;
maxIntensity?: number;
opacity?: number;
radius?: number;
}
export interface WeightedLocation {
location: LatLng;
weight: number;
}
export class MouseEvent {
stop(): void;
}
export class MapsEventListener {
}
}
}