0

我使用 Serice 从客户端获取一些实时数据。实时数据将保存在我的服务中:

 @Injectable()
    export class GeomqttService {

      client: any;

         liveData = [
            {
              topic: '',
              timestamp: '',
              payloadstring: '',
              geometry: ''
            }
          ];

    constructor () {};

    ...

    CODE to connect to the client and get the data
    ...

  this.client.onMessageArrived = (message: Paho.MQTT.Message) => {
      console.log('Message arrived: ' + message.payloadString);
      this.geohistory.push({
        'topic': 'temp',
        'timestamp': message.timestamp,
        'payloadstring': message.payloadString,
        'geometry': message.geometry
      });

几何值包含一个 wkt 字符串,如下所示:

'POINT (30 10)'

现在我想通过我的地图中的服务注入这些点。
这不起作用:

import {GeomqttService} from '../../paho/geomqtt.service';

import * as ol from 'openlayers';


@Component({
  selector: 'olmap',
  encapsulation: ViewEncapsulation.None,
  templateUrl: './map.component.html',
  styleUrls: ['./map.component.css']
})
export class MapComponent implements OnInit, AfterViewInit {
constructor(private geomqttService: GeomqttService) {}

 ngAfterViewInit() {


      let map = new ol.Map({
        target: this.mapId2,
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM(),
          }),
          //vector
        ],
        view: new ol.View({
          center: ol.proj.fromLonLat([6.661594, 50.433237]),
          zoom: 3,
        })
      });

const wkt = this.service.liveData.geometry;

      const format = new ol.format.WKT();

      const feature = format.readFeature(wkt, {
        dataProjection: 'EPSG:4326',
        featureProjection: 'EPSG:3857'
      });

      const vector = new ol.layer.Vector({
        source: new ol.source.Vector({
          features: [feature]
        })
      });


// -- addlayer --

  addLayer(url: string, name: string) {
    console.log(name);
    let addedlayer = new ol.layer.Tile({
      source: new ol.source.TileWMS({
        url: url,
        params: {
          'LAYERS': name,
          'TILED': true
        },
        projection: 'EPSG:4326'
      })
    });
    this.layers.push(addedlayer);
    this.mapService.getMap(this.mapIndex).addLayer(addedlayer);
  }

}

我通常如何通过角度服务访问对象或数组?

4

0 回答 0