如何使用pubnub跟踪多个设备?

时间:2018-04-04 12:52:14

标签: mapbox pubnub

我正在使用pubnub的eon-map框架进行实时数据/标记更新,
在我的情况下,有多个团队,每个团队包含多个成员,每个成员在独特渠道上发布他们的数据,例如:xyz-member.id 我想跟踪一个选定的成员并跟踪所有功能。

我见过Realtime Flight Tracking Map但在该示例中,他们从一个节点而不是多个节点发布所有数据。

地图配置:

let pn = new PubNub({
  publishKey: 'key', 
  subscribeKey: 'key'  
});

let map = eon.map({
  pubnub: pn,
  id: 'tracking-map',
  mbToken: 'token',
  mbId: 'id',
  //channels array equal to members.length
  channels: ['xyz-member.id', 'xyz-member.id', 'xyz-member.id'], 
  message: (data, token, ch) => {
    map.setView(data[0].latlng, 15);
  }
});


发布前言

pn.publish({
  channel: 'xyz-member.id', //each member create their own channel.
  message:  [
    {"latlng": [latitude, longitude]}
  ]
});

enter image description here

1 个答案:

答案 0 :(得分:2)

是的,您当然可以从许多节点发布。您的EON地图只能订阅1个频道。您需要为每个成员发布到相同的频道。该消息应包含地图上每个信标的唯一密钥。

enter image description here

会员A

pubnub.publish({
  channel: 'map',
  message: {
    point_1: {
      latlng: [37.370375, -97.756138]
    }
  }
});

会员B

pubnub.publish({
  channel: 'map',
  message: {
    point_2: {
      latlng: [23.234, -94.32346]
    }
  }
});

EON地图订阅:

channels: ['map']

此方案的有用代码示例 Distributed.html 位于:https://github.com/pubnub/eon-map/tree/master/examples