2016-11-24 5 views
1

Попытка испускать геометрию после того, как функция нарисована на вкладке 1. Затем попытайтесь перерисовать функцию с помощью socket.on, которая будет отображаться на вкладке 2. Однако по какой-либо причине функция не является нарисован.Функция рисования в ol3 с использованием node.js

window.onload = function init() { 
    var source = new ol.source.Vector({ wrapX: false }); 
    //create a base vector layer to draw on 
    var vector = new ol.layer.Vector({ 
     source: source, 
    }); 

    var raster = new ol.layer.Tile({ 
     source: new ol.source.OSM() 
    }); 

    //create map 
    map = new ol.Map({ 
    layers: [raster, vector], 
    target: 'map', 
    controls: ol.control.defaults({ 
     attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ 
      collapsible: false 
     }) 
    }), 
    view: new ol.View({ 
     center: [0,0], 
     zoom: 10 
    }) 
    }); 

    function drawShape(value) { 

     var value = value; 
     if (value !== 'None') { 
      draw = new ol.interaction.Draw({ 
       source: source, 
       type: /** @type {ol.geom.GeometryType} */ (value) 
      }); 
      map.addInteraction(draw); 

      draw.on('drawend', function (event) { 

      // Get the array of features 
      var feature = event.feature 

      try { 
       map.removeInteraction(draw); 
       socket.emit('new polygon', feature.getGeometry().getCoordinates()); 
       socket.emit('chat message', feature.getGeometry().getCoordinates()); 
      } catch (err) { } 
      }); 
     } 
    } 

    var socket = io(); 
    socket.on('new polygon', function (msg) { 

     var thing = new ol.geom.Polygon(msg); 

     var featurething = new ol.Feature({ 
      name: "Thing", 
      geometry: thing 
     }); 

     source.addFeature(featurething); 

    }); 
} 

При запуске скрипта msg содержит массив координат. В консоли ничего не появляется.

msg value

Я новичок в Node.js. кто-нибудь знает, что я делаю неправильно

+1

Вы можете добавить пример вывода из вашего Node.js сценария? Что означает 'msg' в вашем' socket.on'? Любые ошибки консоли браузера от openlayers? – chrki

+0

обновлено – Khal786

ответ

1

Обнаружили ошибку. В вашем socket.on обратного вызова вы звоните

source.addFeatures(featurething); 

, когда он должен быть

source.addFeature(featurething); // single feature, no s 

или

source.addFeatures([featurething]); // put it in an array