diff --git a/Location/location.android.ts b/Location/location.android.ts index 952e0a90b..3ee19ba09 100644 --- a/Location/location.android.ts +++ b/Location/location.android.ts @@ -73,7 +73,7 @@ export class LocationManager { constructor() { // put some defaults this.desiredAccuracy = types.DesiredAccuracy.HIGH; - this.updateDistance = 10; + this.updateDistance = 0; this.minimumUpdateTime = 200; this.isStarted = false; diff --git a/Location/location.d.ts b/Location/location.d.ts index 3df9c336a..205c1081d 100644 --- a/Location/location.d.ts +++ b/Location/location.d.ts @@ -15,19 +15,19 @@ export declare class Location { latitude: number; longitude: number; - altitude: number; + altitude: number; // in meters - horizontalAccuracy: number; - verticalAccuracy: number; + horizontalAccuracy: number; // in meters + verticalAccuracy: number; // in meters - speed: number; // in m/s ? + speed: number; // in m/s direction: number; // in degrees timestamp: Date; public androidNative: any; // android Location - public iosNative: any; // iOS native location + public iosNative: any; // iOS CLLocation } export declare class RegionChangeListener { @@ -36,19 +36,52 @@ export declare class RegionChangeListener { } export declare class LocationManager { + /** + * Report are location services switched ON for this device (on Android) or application (iOS) + */ static isLocationEnabled(): boolean; + + /** + * Measure distance in meters between two locations + */ static distanceInMeters(loc1: Location, loc2: Location): number; + /** + * Specifies desired accuracy in meters. Defaults to DesiredAccuracy.HIGH + */ desiredAccuracy: number; + + /** + * Update distance filter in meters. Specifies how often to update. Default on iOS is no filter, on Android it is 0 meters + */ updateDistance: number; - // minimum time interval between location updates, in milliseconds (android only) + + /** + * Minimum time interval between location updates, in milliseconds (android only) + */ minimumUpdateTime: number; + + /** + * True if location listener is already started. In this case all other start requests will be ignored + */ isStarted: boolean; // monitoring + + /** + * Starts location monitoring. + */ startLocationMonitoring(onLocation: (location: Location) => any, onError?: (error: Error) => any); + + /** + * Stops location monitoring + */ stopLocationMonitoring(); // other + + /** + * Returns last known location from device's location services or null of no known last location + */ getLastKnownLocation(): Location; -} \ No newline at end of file +} diff --git a/Location/location.ios.ts b/Location/location.ios.ts index 483771747..0073ad4fd 100644 --- a/Location/location.ios.ts +++ b/Location/location.ios.ts @@ -10,7 +10,9 @@ export class LocationManager { public updateDistance: number; public isStarted: boolean; + private iosLocationManager: CoreLocation.CLLocationManager; + private listener: any; private static locationFromCLLocation(clLocation: CoreLocation.CLLocation): types.Location { var location = new types.Location(); @@ -89,9 +91,9 @@ export class LocationManager { } }); - var listener = new LocationListener(); - listener.setupWithFunctions(onLocation, onError); - this.iosLocationManager.delegate = listener; + this.listener = new LocationListener(); + this.listener.setupWithFunctions(onLocation, onError); + this.iosLocationManager.delegate = this.listener; this.iosLocationManager.desiredAccuracy = this.desiredAccuracy; this.iosLocationManager.distanceFilter = this.updateDistance; this.iosLocationManager.startUpdatingLocation(); diff --git a/Location/location_types.ts b/Location/location_types.ts index a64bece7c..ece51b4c2 100644 --- a/Location/location_types.ts +++ b/Location/location_types.ts @@ -30,12 +30,6 @@ export class LocationRegion { public raduis: number; // radius in meters } -// TODO: This might be implemented with a callback, no need of special type. -export class LocationChangeListener { - //onLocationChange(location: Location) { - //} -} - // TODO: This might be implemented with two callbacks, no need of special type. export class RegionChangeListener { onRegionEnter(region: LocationRegion) {