Skip to content
No description, website, or topics provided.
Java TypeScript JavaScript
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
android * Removing ios and pwa support Sep 13, 2019
.gitignore * Removing ios and pwa support Sep 13, 2019 * Removing ios and pwa support Sep 13, 2019
package-lock.json Bump v. 1.2.1 Oct 3, 2019
package.json Bump v. 1.2.1 Oct 3, 2019
rollup.config.js Initial commit Apr 11, 2019
tsconfig.json Initial commit Apr 11, 2019


npm version Vulnerabilities License


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 currently depends on RxLocation and was initially inspired by this issue/pull request

Supported platforms

  • Android

Android setup

  • ionic start my-cap-app --capacitor
  • cd my-cap-app
  • npm install --save @jonoj/capacitor-fused-location
  • mkdir www && touch www/index.html
  • npx cap add android
  • npx cap sync android
  • npx cap open android
  • [extra step] in android case we need to tell Capacitor to initialise the plugin:

on your file add import com.jonoj.plugin.FusedLocation; and then inside the init callback add(FusedLocation.class);

Now you should be set to go. Try to run your client using ionic cap run android --livereload.

Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.


import {FusedLocationPlugin} from '@jonoj/capacitor-fused-location';

const fusedLocation = new FusedLocationPlugin();

class FusedFGeolocationExample {
  async getFusedLocation() {
        if (!('hybrid') && !'android'))) {
            console.log('only android support!');
    const coordinates = await fusedLocation.getCurrentPosition();
    console.log('Current', coordinates);

  watchPosition() {
    if (!('hybrid') && !'android'))) {
        console.log('only android support!');
    const wait = fusedLocation.watchPosition({}, (position, err) => {


Manually tested against the following platforms:

  • Android emulator 10.0 (API Level 28)
  • Android emulator 7.0 (API Level 24)
  • Android device 6.0 (API Level 23)
You can’t perform that action at this time.