Pubnub - 如何从频道取消发布

时间:2016-08-04 09:29:20

标签: javascript pubnub

我尝试实施Pubnub - "Realtime Flight Tracking Map" example

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

请帮我实现此功能..

2 个答案:

答案 0 :(得分:1)

一旦发布,您就不想取消发布消息,只需向正在发布的数据添加状态属性,以便您可以根据航班状态决定删除,不渲染或更改标记。 / p>

该演示并未演示此类功能。 PubNub方面有两个选项。

  1. 向您的有效负载添加一个属性,指示当前的航班状态。这样您就可以移动标记,或根据飞行状态移除标记。在右侧代码面板
  2. 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;
      }
    });
    

    总体思路是对航班状态的变化作出反应。

答案 1 :(得分:0)

取消发布并删除标记

如果您将航班设置为0.00.0

,是否有效?
66e234a: {
       latlng: [
         0.0,
         0.0
       ]

unpublish“从地图中删除标记”的功能可以在此处添加为功能请求:https://github.com/pubnub/eon/issues/new - New Feature “所有删除地图标记的功能” 即可。现在,您可以发布LAT / LONG 0.00.0