要使圆形在ArcGIS JS API中不随地图缩放而缩放,可以使用以下方法:
// 创建圆形
var circle = new esri.geometry.Circle({
center: [longitude, latitude],
radius: radiusInMeters
});
// 创建圆形的符号
var symbol = new esri.symbol.SimpleFillSymbol(
esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(
esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new esri.Color([255, 0, 0]), 2
),
new esri.Color([255, 0, 0, 0.25])
);
// 创建圆形的图形
var graphic = new esri.Graphic(circle, symbol);
// 将图形添加到GraphicsLayer中
var graphicsLayer = new esri.layers.GraphicsLayer();
graphicsLayer.add(graphic);
// 将GraphicsLayer添加到地图中
map.addLayer(graphicsLayer);
// 监听地图的extent-change事件
map.on("extent-change", function(event) {
// 获取当前地图范围的缩放比例
var scale = event.extent.getWidth() / map.width;
// 根据缩放比例重新计算圆形的半径
var newRadius = radiusInMeters / scale;
// 更新圆形的半径
circle.setRadius(newRadius);
// 更新图形的几何形状
graphic.setGeometry(circle);
// 刷新GraphicsLayer以更新圆形的显示
graphicsLayer.refresh();
});
通过上述代码,当地图缩放时,圆形将保持相同的实际大小,不会缩放。