capacitor-gray-geolocation
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

capacitor-gray-geolocation

npm version Known Vulnerabilities License

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 which already handles that.

This Plugin also has method calls to turn on location.


Supported platforms

  • Android
  • Web

Install

npm install capacitor-gray-geolocation
npx cap sync

API

turnLocationOn()

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()

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

// 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
    }
}
// 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)

Readme

Keywords

Package Sidebar

Install

npm i capacitor-gray-geolocation

Weekly Downloads

5

Version

0.2.0

License

MIT

Unpacked Size

31.3 kB

Total Files

25

Last publish

Collaborators

  • grayhat