cesium polyline 缩放会变宽
时间: 2023-09-04 14:09:38 浏览: 274
Cesium的Polyline在缩放时会变宽,这是因为Polyline的宽度是以像素为单位而不是以米为单位来定义的。随着缩放级别的变化,像素的数量也会改变,因此Polyline的宽度也会发生变化。
解决方法是在定义Polyline时,将其宽度设置为一个基于地图缩放级别的固定值,而不是像素值。这样,当地图缩放时,Polyline的宽度将保持不变。可以使用Cesium的`Scene`对象的`screenSpaceCameraController`属性来获取当前的缩放级别,然后根据缩放级别计算出应该使用的Polyline宽度。
以下是一个示例代码:
```javascript
var viewer = new Cesium.Viewer('cesiumContainer');
var polyline = viewer.entities.add({
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([
-75.59777, 40.03883,
-80.23756, 25.79330,
-64.96310, 46.58360,
-71.06434, 42.35776
]),
width : new Cesium.CallbackProperty(getPolylineWidth, false),
material : Cesium.Color.RED
}
});
function getPolylineWidth() {
var zoomLevel = viewer.scene.screenSpaceCameraController.zoomLevel;
var lineWidth = 5 / zoomLevel;
return lineWidth;
}
```
在此示例中,我们使用了`CallbackProperty`来定义Polyline的宽度,并将其设置为`getPolylineWidth`函数的返回值。在`getPolylineWidth`函数中,我们获取当前的缩放级别,计算出应该使用的Polyline宽度,并将其返回。
阅读全文