首页 / 浏览问题 / WebGIS / 问题详情
如何在cesium中绘制通过iserver请求返回的面?
30EXP 2023年12月28日
通过iserver查询返回了很多 feature,是通过add entity的模式添加还是将其变为一个图层在进行添加?能否提供一些例子

1个回答

您好,您可以通过将每个面作为单独的 Entity 添加

const features = queryResult.features; // 假设查询结果是一个包含面数据的数组

for (let i = 0; i < features.length; i++) {
  const feature = features[i];

  const entity = new Cesium.Entity({
    polygon: {
      hierarchy: Cesium.Cartesian3.fromDegreesArray(feature.geometry.coordinates),
      material: Cesium.Color.fromCssColorString('#ff0000').withAlpha(0.5),
    },
    properties: {
      id: feature.properties.id,
      name: feature.properties.name,
    },
  });

  viewer.entities.add(entity);
}

也可以变成一个图层添加的

const features = queryResult.features; // 假设查询结果是一个包含面数据的数组

const geoJson = {
  type: 'FeatureCollection',
  features: features.map((feature) => ({
    type: 'Feature',
    geometry: {
      type: 'Polygon',
      coordinates: [feature.geometry.coordinates],
    },
    properties: {
      id: feature.properties.id,
      name: feature.properties.name,
    },
  })),
};

const dataSource = Cesium.GeoJsonDataSource.load(geoJson);
viewer.dataSources.add(dataSource);

565EXP 2023年12月28日
您面坐标数据是不是在points里面保存的呀
我的数据是超图iserver发布的面矢量数据,通过请求返回的面features。想请教一下如果想在cesium上展开iserver返回的面数据我应该怎么做。

把feature.geometry.coordinates修改成feature.geometry.points后报错:

您的查询服务url是什么样的
...