首页 文章

离子中的多重地理围栏

提问于
浏览
0

在我的离子项目中,我使用了地理围栏 . 当我在该地区打开应用程序时,会显示通知 . 如何在跨越地理围栏的边界时查看通知 .

我使用了3个围栏(12Km.300m,50m) . 当在50m范围内时,应用程序显示三个通知(三个围栏的通知) . 当我处于50米范围的条件范围内时,我如何能够显示唯一的通知 .

在app.component.ts中

constructor(public platform: Platform,
              public statusBar: StatusBar,
             ...........) {

      this.addGeofence();
  }


private addGeofence() {
    let fence = [{
      id: '69ca1b88-6fbe-4e80-add-sd-4d3748-far',
      latitude:       8.556498,
      longitude:      76.881820,
      radius:         12000,
      transitionType: 1,
        notification: {
          id:             111111111,
          title:          'Welcome ',
          text:           '12km range.',
          openAppOnClick: true
        }
    },
      {
        id: '69ca1b88-6fbe-4e80-add-sd-4d3748-closevicinity',
        latitude:       8.556498,
        longitude:      76.881820,
        radius:         300,
        transitionType: 1,
        notification: {
          id:             222222222,
          title:          'Welcome',
          text:           '300m range',
          openAppOnClick: true
        }
      },
      {
        id: '69ca1b88-6fbe-4e80-add-sd-4d3748-near',
        latitude:       8.556498,
        longitude:      76.881820,
        radius:         50,
        transitionType: 1,
        notification: {
          id:             333333333,
          title:          'Welcome',
          text:           '50m range',
          openAppOnClick: true
        }
      },]

1 回答

  • 1

    我的建议:您可以使用离子的地理定位插件来获取当前位置 . 要么使用它来检查每分钟一次的位置,要么使用背景地理定位插件在后台模式下执行此操作 . 对于您获得的每个位置更新,请检查您是否处于地理围栏的半径之一 . 您可以使用像草皮这样的库来进行数学运算 .

    如果您只是想在越过边界时收到通知,请将您最后的地理围栏保存到存储中,每次启动应用程序检查时,地理围栏是否发生变化 .

    使用位置订阅和后台模式时请小心,因为它可能需要大量电池 .

相关问题