https://github.com/grayhat12/gray-geolocation
A capacitorjs plugin that turns on device location
https://github.com/grayhat12/gray-geolocation
capacitor-android capacitor-plugin geolocation
Last synced: 4 months ago
JSON representation
A capacitorjs plugin that turns on device location
- Host: GitHub
- URL: https://github.com/grayhat12/gray-geolocation
- Owner: GrayHat12
- License: mit
- Created: 2020-10-02T17:59:12.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2022-09-30T12:27:36.000Z (over 3 years ago)
- Last Synced: 2025-04-13T20:15:31.943Z (about 1 year ago)
- Topics: capacitor-android, capacitor-plugin, geolocation
- Language: Java
- Homepage: https://www.npmjs.com/package/capacitor-gray-geolocation
- Size: 212 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# capacitor-gray-geolocation
## Description
Geolocation plugin that uses the fused location service instead of the native API.
Getting a location under android is quite difficult. The standard API implemented now in capacitor returns the GPS provider which results in never getting a position indoors. This is not the case under iOS. A better way under Android is the [FusedLocationProvider](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient) which already handles that.
This Plugin also has method calls to turn on location.
--------------------
## Supported platforms
- Android
- Web
--------------------
## Install
```bash
npm install capacitor-gray-geolocation
npx cap sync
```
--------------------
## API
* [`turnLocationOn()`](#turnlocationon)
* [`getCurrentPosition()`](#getcurrentposition)
### turnLocationOn()
```typescript
turnLocationOn() => Promise<{ res: boolean; }>
```
This prompts the user on android to turn location on.
Firtstly checks for location permissions and if they are not granted, it prompts the user to grant permissions.
Always returns `{res: true}` for web.
Not implemented on iOS.
**Returns:** Promise<{ res: boolean; }>
--------------------
### getCurrentPosition()
```typescript
getCurrentPosition() => Promise<{ latitude: number; longitude: number; }>
```
Returns current position of the device.
Firtstly checks for location permissions and if they are not granted, it prompts the user to grant permissions.
Not implemented on iOS.
**Returns:** Promise<{ latitude: number; longitude: number; }>
--------------------
## Example
```js
// Inside the Ionic code
import { Device } from "@capacitor/device";
import { GrayGeolocation } from "capacitor-gray-geolocation";
// ...code
//function to get location (handle errors yourself)
getLocation = async() => {
let deviceInfo = await Device.getInfo();
if(deviceInfo.platform === "ios") {
//use the capacitor Plugins.Geolocation for geolocation
return;
}
let locationOn = await GrayGeolocation.turnLocationOn();
if(locationOn.res) {
let coords = await GrayGeolocation.getCurrentPosition();
console.log("latitude :",coords.latitude,"longitude :",coords.longitude);
return coords;
}
else{
//failed to turn on location : User declined
}
}
```
```java
// Inside the Android code (MainActivity.java)
// ... imports
import com.gray.plugins.capacitor.GrayGeolocationPlugin;
public class MainActivity extends BridgeActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... register other plugins if any
registerPlugin(GrayGeolocationPlugin.class);
super.onCreate(savedInstanceState);
}
}
```
--------------------
## Testing
Manually tested against the following platforms:
* Android device 11.0 (API Level 30)