awesome-cordova-plugins/src/plugins/googlemaps.ts

224 lines
5.5 KiB
TypeScript
Raw Normal View History

import {Cordova, Plugin} from './plugin';
2016-05-21 04:59:18 +08:00
import {Observable} from 'rxjs/Rx';
import {CordovaInstance} from './plugin';
/**
* Created by Ibrahim on 3/29/2016.
*/
declare var plugin: any;
/**
* @name Google Maps
2016-05-25 12:53:35 +08:00
* @description This plugin uses the native Google Maps SDK
* @usage
* ```
* import {GoogleMaps} from 'ionic-native';
*
* ...
*
* // somewhere in your component
* let map = new GoogleMaps('elementID');
*
* map.onInit().subscribe(() => console.log("Map is ready!"));
* ```
*/
@Plugin({
2016-05-25 15:12:11 +08:00
pluginRef: 'plugin.google.maps.Map',
2016-04-30 10:47:45 +08:00
plugin: 'cordova-plugin-googlemaps',
repo: 'https://github.com/mapsplugin/cordova-plugin-googlemaps'
})
export class GoogleMaps {
private _objectInstance: any;
2016-05-25 15:12:11 +08:00
/**
* Checks if a map object has been created.
* @return {Promise<GoogleMaps>} returns a promise that resolves with the Map object (if it exists).
*/
@Cordova()
static isAvailable (): Promise<GoogleMaps> {return; }
constructor (elementId: string) {
2016-04-30 10:47:01 +08:00
this._objectInstance = plugin.google.maps.Map.getMap(document.getElementById(elementId));
}
2016-05-25 15:12:11 +08:00
/**
* Get notified via an Observable when the user clicks on the map. (Event: MAP_CLICK)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_CLICK'
})
static onMapClick (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the user long-clicks on the map. (Event: MAP_LONG_CLICK)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_LONG_CLICK'
})
static onMapLongClick (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the user clicks the `My Location` button. (Event: MY_LOCATION_BUTTON_CLICK)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MY_LOCATION_BUTTON_CLICK'
})
static onMyLocationButtonClick (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the user changes the view. (Event: CAMERA_CHANGE)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.CAMERA_CHANGE'
})
static onCameraChange (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the view is on idle. (Event: CAMERA_IDLE)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.CAMERA_IDLE',
platforms: ['iOS']
})
static onCameraIdle (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the map is ready. (Event: MAP_READY)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_READY'
})
2016-05-25 15:12:11 +08:00
static onMapReady (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the map is loaded. (Event: MAP_LOADED)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_LOADED',
platforms: ['Android']
})
static onMapLoaded (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the map will move. (Event: MAP_WILL_MOVE)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_WILL_MOVE',
platforms: ['iOS']
})
static onMapWillMove (): Observable<GoogleMaps> {return; }
/**
* Get notified via an Observable when the user closes the map. (Event: MAP_CLOSE)
*/
@Cordova({
eventObservable: true,
event: 'plugin.google.maps.event.MAP_CLOSE'
})
static onMapClose (): Observable<GoogleMaps> {return; }
@CordovaInstance({
sync: true
})
setDebuggable (isDebuggable: boolean): void {}
2016-05-25 15:12:11 +08:00
@CordovaInstance({
sync: true
})
setClickable (isClickable: boolean): void {}
2016-05-25 15:12:11 +08:00
@CordovaInstance({
sync: true
})
animateCamera (options: AnimateCameraOptions): void {return; }
/**
2016-05-25 15:12:58 +08:00
* Get the position of the camera
2016-05-25 15:12:11 +08:00
*/
@CordovaInstance()
getCameraPosition (): Promise<CameraPosition> {return; }
/**
2016-05-25 15:12:58 +08:00
* Get the location of the user
2016-05-25 15:12:11 +08:00
*/
@CordovaInstance()
getMyLocation (): Promise<MyLocation> {return; }
/**
2016-05-25 15:12:58 +08:00
* Get the visible region
2016-05-25 15:12:11 +08:00
*/
@CordovaInstance()
getVisibleRegion (): Promise<VisibleRegion> {return; }
}
export interface AnimateCameraOptions {
target: string;
tilt: number;
zoom: number;
bearing: number;
duration: number;
}
export interface CameraPosition {
target: {
lat: string;
lng: string;
};
zoom: number;
tilt: number;
bearing: number;
}
export interface MyLocation {
latLng: {
lat: string;
lng: string;
};
speed: number;
time: string;
bearing: number;
2016-03-29 18:56:21 +08:00
}
2016-05-25 15:12:11 +08:00
export interface VisibleRegion {
northeast: any;
southwest: any;
}
/**
* @private
Google Maps LatLng
**/
@Plugin({
pluginRef: 'plugin.google.maps.Map',
plugin: 'cordova-plugin-googlemaps',
repo: 'https://github.com/mapsplugin/cordova-plugin-googlemaps'
})
export class GoogleMapsLatLng {
constructor (public lat: string, public lng: string) {
return plugin.google.maps.LatLng(lat, lng);
}
@CordovaInstance({
sync: true
})
equals (other: GoogleMapsLatLng): boolean {return; }
@CordovaInstance({
sync: true
})
toString (): string {return; }
@CordovaInstance({
sync: true
})
toUrlValue (precision?: number): string {return; }
}