import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'; import { MouseEvent } from '../map-types'; import { GoogleMapsAPIWrapper } from '../services/google-maps-api-wrapper'; import { FullscreenControlOptions, LatLngLiteral, MapTypeControlOptions, MapTypeId, PanControlOptions, RotateControlOptions, ScaleControlOptions, StreetViewControlOptions, ZoomControlOptions } from '../services/google-maps-types'; import { LatLngBounds, LatLngBoundsLiteral, MapTypeStyle } from '../services/google-maps-types'; /** * AgmMap renders a Google Map. * **Important note**: To be able see a map in the browser, you have to define a height for the * element `agm-map`. * * ### Example * ```typescript * import { Component } from '@angular/core'; * * @Component({ * selector: 'my-map-cmp', * styles: [` * agm-map { * height: 300px; * } * `], * template: ` * * * ` * }) * ``` */ export declare class AgmMap implements OnChanges, OnInit, OnDestroy { private _elem; private _mapsWrapper; /** * The longitude that defines the center of the map. */ longitude: number; /** * The latitude that defines the center of the map. */ latitude: number; /** * The zoom level of the map. The default zoom level is 8. */ zoom: number; /** * The minimal zoom level of the map allowed. When not provided, no restrictions to the zoom level * are enforced. */ minZoom: number; /** * The maximal zoom level of the map allowed. When not provided, no restrictions to the zoom level * are enforced. */ maxZoom: number; /** * Enables/disables if map is draggable. */ draggable: boolean; /** * Enables/disables zoom and center on double click. Enabled by default. */ disableDoubleClickZoom: boolean; /** * Enables/disables all default UI of the Google map. Please note: When the map is created, this * value cannot get updated. */ disableDefaultUI: boolean; /** * If false, disables scrollwheel zooming on the map. The scrollwheel is enabled by default. */ scrollwheel: boolean; /** * Color used for the background of the Map div. This color will be visible when tiles have not * yet loaded as the user pans. This option can only be set when the map is initialized. */ backgroundColor: string; /** * The name or url of the cursor to display when mousing over a draggable map. This property uses * the css * cursor attribute to change the icon. As with the css property, you must specify at * least one fallback cursor that is not a URL. For example: * [draggableCursor]="'url(http://www.example.com/icon.png), auto;'" */ draggableCursor: string; /** * The name or url of the cursor to display when the map is being dragged. This property uses the * css cursor attribute to change the icon. As with the css property, you must specify at least * one fallback cursor that is not a URL. For example: * [draggingCursor]="'url(http://www.example.com/icon.png), auto;'" */ draggingCursor: string; /** * If false, prevents the map from being controlled by the keyboard. Keyboard shortcuts are * enabled by default. */ keyboardShortcuts: boolean; /** * The enabled/disabled state of the Zoom control. */ zoomControl: boolean; /** * Options for the Zoom control. */ zoomControlOptions: ZoomControlOptions; /** * Styles to apply to each of the default map types. Note that for Satellite/Hybrid and Terrain * modes, these styles will only apply to labels and geometry. */ styles: MapTypeStyle[]; /** * When true and the latitude and/or longitude values changes, the Google Maps panTo method is * used to * center the map. See: https://developers.google.com/maps/documentation/javascript/reference#Map */ usePanning: boolean; /** * The initial enabled/disabled state of the Street View Pegman control. * This control is part of the default UI, and should be set to false when displaying a map type * on which the Street View road overlay should not appear (e.g. a non-Earth map type). */ streetViewControl: boolean; /** * Options for the Street View control. */ streetViewControlOptions: StreetViewControlOptions; /** * Sets the viewport to contain the given bounds. */ fitBounds: LatLngBoundsLiteral | LatLngBounds; /** * The initial enabled/disabled state of the Scale control. This is disabled by default. */ scaleControl: boolean; /** * Options for the scale control. */ scaleControlOptions: ScaleControlOptions; /** * The initial enabled/disabled state of the Map type control. */ mapTypeControl: boolean; /** * Options for the Map type control. */ mapTypeControlOptions: MapTypeControlOptions; /** * The initial enabled/disabled state of the Pan control. */ panControl: boolean; /** * Options for the Pan control. */ panControlOptions: PanControlOptions; /** * The initial enabled/disabled state of the Rotate control. */ rotateControl: boolean; /** * Options for the Rotate control. */ rotateControlOptions: RotateControlOptions; /** * The initial enabled/disabled state of the Fullscreen control. */ fullscreenControl: boolean; /** * Options for the Fullscreen control. */ fullscreenControlOptions: FullscreenControlOptions; /** * The map mapTypeId. Defaults to 'roadmap'. */ mapTypeId: 'roadmap' | 'hybrid' | 'satellite' | 'terrain' | string; /** * When false, map icons are not clickable. A map icon represents a point of interest, * also known as a POI. By default map icons are clickable. */ clickableIcons: boolean; /** * This setting controls how gestures on the map are handled. * Allowed values: * - 'cooperative' (Two-finger touch gestures pan and zoom the map. One-finger touch gestures are not handled by the map.) * - 'greedy' (All touch gestures pan or zoom the map.) * - 'none' (The map cannot be panned or zoomed by user gestures.) * - 'auto' [default] (Gesture handling is either cooperative or greedy, depending on whether the page is scrollable or not. */ gestureHandling: 'cooperative' | 'greedy' | 'none' | 'auto'; /** * Map option attributes that can change over time */ private static _mapOptionsAttributes; private _observableSubscriptions; /** * This event emitter gets emitted when the user clicks on the map (but not when they click on a * marker or infoWindow). */ mapClick: EventEmitter; /** * This event emitter gets emitted when the user right-clicks on the map (but not when they click * on a marker or infoWindow). */ mapRightClick: EventEmitter; /** * This event emitter gets emitted when the user double-clicks on the map (but not when they click * on a marker or infoWindow). */ mapDblClick: EventEmitter; /** * This event emitter is fired when the map center changes. */ centerChange: EventEmitter; /** * This event is fired when the viewport bounds have changed. */ boundsChange: EventEmitter; /** * This event is fired when the mapTypeId property changes. */ mapTypeIdChange: EventEmitter; /** * This event is fired when the map becomes idle after panning or zooming. */ idle: EventEmitter; /** * This event is fired when the zoom level has changed. */ zoomChange: EventEmitter; /** * This event is fired when the google map is fully initialized. * You get the google.maps.Map instance as a result of this EventEmitter. */ mapReady: EventEmitter; constructor(_elem: ElementRef, _mapsWrapper: GoogleMapsAPIWrapper); /** @internal */ ngOnInit(): void; private _initMapInstance(el); /** @internal */ ngOnDestroy(): void; ngOnChanges(changes: SimpleChanges): void; private _updateMapOptionsChanges(changes); /** * Triggers a resize event on the google map instance. * When recenter is true, the of the google map gets called with the current lat/lng values or fitBounds value to recenter the map. * Returns a promise that gets resolved after the event was triggered. */ triggerResize(recenter?: boolean): Promise; private _updatePosition(changes); private _setCenter(); private _fitBounds(); private _handleMapCenterChange(); private _handleBoundsChange(); private _handleMapTypeIdChange(); private _handleMapZoomChange(); private _handleIdleEvent(); private _handleMapMouseEvents(); }