Pubnub-如何从频道取消发布

Pubnub - How to UnPublish from a channel

本文关键字:取消 频道 Pubnub-      更新时间:2023-09-26

我尝试实现Pubnub-"实时飞行跟踪地图"示例

有人能告诉我如何从频道取消发布,然后相应的标记应该从地图上消失吗。例如,在上面链接中显示的演示中,如果航班"66e234a"离线,则该标记不应显示在地图中。

请帮助我实现此功能。。

一旦发布,您不想取消发布消息,只需在发布的数据中添加一个状态属性,这样您就可以根据航班状态决定删除、而不是渲染或更改标记。

该演示并没有演示这种类型的功能。PubNub侧有两个选项。

  1. 为有效载荷添加一个属性,指示飞行的当前状态。通过这种方式,您可以根据飞行状态移动标记或移除标记。在右侧代码面板上
PUBNUB.publish({
    channel:  'sfo-flight-data',
    message:  
      {
        66e234a: {
           latlng: [
             37.6271,
             -122.3858
           ],
           data: [
             "A33D8C",
             37.6271,
             -122.3858,
             118,
             0,
             23,
             "3765",
             "F-KSJC3",
             "DC10",
             "N308FE",
             1433383239,
             "SFO",
             "MEM",
             "FX1345",
             1,
             0,
             "FDX1345",
             ,0
             "active" //ADDED
           ],
         },
         //...
      }
});

在左边,当接收到消息时呈现标记的代码。

  var map = eon.map({
  id: 'map',
  mb_id: 'ianjennings.lec06po7',
  mb_token: 'pk.eyJ1IjoiaWFuamVubmluZ3MiLCJhIjoiZExwb0p5WSJ9.XLi48h-NOyJOCJuu1-h-Jg',
  channel: 'sfo-flight-data',
  rotate: true,
  history: true,
  marker: function (latlng, data) {
    if(data[15] !== 'active'){ //EVALUATED
       return;
    }
    var marker = new L.RotatedMarker(latlng, {
      icon: L.icon({
        iconUrl: '/wp-content/uploads/2016/05/airplane.png',
        iconSize: [24, 24]
      })
    });
    var popup = '';
    if(data[13]) {
      popup = 'Flight ' + data[13] + '';
    }
    if(data[11]) {
      if(!popup.length) {
        popup = 'Flight from ' + data[11];
      } else {
        popup += ' from ' + data[11];
      }
    }
    if(data[12]) {
      if(!popup.length) {
        popup = 'Flight to ' + data[12];
      } else {
        popup += ' to ' + data[12];
      }
    }
    if(!popup.length) {
      var popup = 'No data available';
    }
    marker.bindPopup(popup);
    return marker;
  }
});

总的想法是对飞行状态的变化做出反应。

取消发布并删除标记

如果您将航班设置为0.00.0,它能工作吗?

66e234a: {
       latlng: [
         0.0,
         0.0
       ]

然而,unpublish"从地图上删除标记"的功能可以作为功能请求添加到此处:https://github.com/pubnub/eon/issues/new-New Feature"所有移除地图上标记的能力"。现在,您可以发布0.00.0的LAT/LONG。