主题
添加点、线和面
字数统计: 1.8k 字
阅读时长: 约 4 分钟
当前版本: 4.29
了解如何在地图中显示点、线和面图形。
图形是用于在地图或场景中显示点、线、面和文本的视觉元素。图形由几何、符号和属性组成,单击时可以显示弹出窗口。通常可使用图形来显示未连接到数据库的地理数据 (例如,GPS 位置)。
在本教程中,将在地图上显示点、线和面图形。
步骤
创建新 Pen
- 要开始使用,请完成显示地图教程 。
添加模块
通过
require
引入Graphic
和GraphicsLayer
模块。更多内容
GeoScene Maps SDK for JavaScript 提供了 AMD 模块和 ES 模块,本教程中我们是以 AMD 为例。AMD 使用
require
函数加载模块 - 例如,您可以指定"geoscene/Map"
来加载 Map 模块。加载后,它们将作为参数 (例如,Map
) 传递给回调函数,以便在应用程序中使用。保持引用模块和回调参数的顺序相同是很重要的。有关不同类型模块的更多信息,请访问工具指南主题。jsrequire([ "geoscene/config", "geoscene/Map", "geoscene/views/MapView", "geoscene/Graphic", "geoscene/layers/GraphicsLayer" ], function(geosceneConfig,Map, MapView, Graphic, GraphicsLayer) { })
添加图形图层
图形图层是图形的容器。它与地图视图结合使用在地图上显示图形。您可以将多个图形图层添加到地图视图中。图形图层显示在其他类型图层之上。
创建并添加
GraphicsLayer
以存储图形。jsconst view = new MapView({ map: map, center: [116.8,39], //经度,纬度 zoom: 13, container: "viewDiv" }); const graphicsLayer = new GraphicsLayer(); map.add(graphicsLayer);
添加点图形
点图形通过点和标记符号创建。使用经度 (x) 和纬度 (y) 定义点坐标,使用颜色和轮廓定义一个简单符号。使用Point
和 SimpleMarkerSymbol
类就可以创建一个点图形。
更多内容
如果点、线或多边形的空间参考不是 WKID 102100、3857 或 4326,它们定义几何时需要指定空间参考。否则,添加到地图上时,会默认应用地图视图的空间参考。了解更多关于空间参考和坐标系的详细信息,请参阅空间参考。
创建
point
和simpleMarkerSymbol
。jsconst graphicsLayer = new GraphicsLayer(); map.add(graphicsLayer); const point = { //Create a point type: "point", longitude: 116.80657463861, latitude: 39.0005930608889 }; const simpleMarkerSymbol = { type: "simple-marker", color: [226, 119, 40], outline: { color: [255, 255, 255], width: 1 } };
创建
Graphic
,设置geometry
和symbol
属性。Graphic
类在构造时将自动转换point
和simpleMarkerSymbol
。更多内容
点图形支持多种符号类型,如
SimpleMarkerSymbol
、PictureMarkerSymbol
和TextSymbol
。了解关于符号
的更多信息。jsconst point = { //Create a point type: "point", longitude: 116.80657463861, latitude: 39.0005930608889 }; const simpleMarkerSymbol = { type: "simple-marker", color: [226, 119, 40], outline: { color: [255, 255, 255], width: 1 } }; const pointGraphic = new Graphic({ geometry: point, symbol: simpleMarkerSymbol }); graphicsLayer.add(pointGraphic);
验证点图形位置是否正确。
添加线图形
线图形通过折线和线符号创建。折线是一个点序列,有时候还需要指定空间参考。使用Polyline
和 SimpleLineSymbol
类就可以创建一个线图形。
创建
polyline
和simpleLineSymbol
。jsconst pointGraphic = new Graphic({ geometry: point, symbol: simpleMarkerSymbol }); graphicsLayer.add(pointGraphic); // Create a line geometry const polyline = { type: "polyline", paths: [ [116.821527826096, 39.0139576938577], //经度,纬度 [116.814893761649, 39.0080602407843], //经度,纬度 [116.808878330345, 39.0016642996246] //经度,纬度 ] }; const simpleLineSymbol = { type: "simple-line", color: [226, 119, 40], width: 2 };
创建
Graphic
并设置geometry
和symbol
属性。Graphic
类在创建时将自动转换polyline
和simpleLineSymbol
。更多内容
折线图形支持多种符号类型,如
SimpleLineSymbol
和TextSymbol
。了解关于符号
的更多信息。js// Create a line geometry const polyline = { type: "polyline", paths: [ [116.821527826096, 39.0139576938577], //经度,纬度 [116.814893761649, 39.0080602407843], //经度,纬度 [116.808878330345, 39.0016642996246] //经度,纬度 ] }; const simpleLineSymbol = { type: "simple-line", color: [226, 119, 40], width: 2 }; const polylineGraphic = new Graphic({ geometry: polyline, symbol: simpleLineSymbol }); graphicsLayer.add(polylineGraphic);
验证线图形位置是否正确。
添加面图形
面图形通过面和填充符号创建。面是闭合边界的点序列 (环),有空间参考。使用Polygon
和 SimpleFillSymbol
类就可以创建和显示面图形。
定义
polygon
和simpleFillSymbol
,以用于创建Graphic
jsconst polylineGraphic = new Graphic({ geometry: polyline, symbol: simpleLineSymbol }); graphicsLayer.add(polylineGraphic); // Create a polygon geometry const polygon = { type: "polygon", rings: [ [116.818984489994, 39.0137559967283], //经度,纬度 [116.806796597377, 39.0215816298725], //经度,纬度 [116.791432890735, 39.0163883241613], //经度,纬度 [116.79596686535, 39.008564864635], //经度,纬度 [116.808558110679, 39.0035027131376] //经度,纬度 ] }; const simpleFillSymbol = { type: "simple-fill", color: [227, 139, 79, 0.8], , opacity 80% outline: { color: [255, 255, 255], width: 1 } };
创建
Graphic
并设置geometry
和symbol
属性。Graphic
类在创建时将自动转换polygon
和simpleFillSymbol
。更多内容
面图形支持许多
Symbol
类,例如SimpleFillSymbol
、PictureFillSymbol
、SimpleMarkerSymbol
和TextSymbol
。同样需要注意的是,外多边形环坐标应按顺时针顺序添加,而内环坐标(岛)应按逆时针顺序添加。js// Create a polygon geometry const polygon = { type: "polygon", rings: [ [116.818984489994, 39.0137559967283], //经度,纬度 [116.806796597377, 39.0215816298725], //经度,纬度 [116.791432890735, 39.0163883241613], //经度,纬度 [116.79596686535, 39.008564864635], //经度,纬度 [116.808558110679, 39.0035027131376] //经度,纬度 ] }; const simpleFillSymbol = { type: "simple-fill", color: [227, 139, 79, 0.8], , opacity 80% outline: { color: [255, 255, 255], width: 1 } }; const polygonGraphic = new Graphic({ geometry: polygon, symbol: simpleFillSymbol, }); graphicsLayer.add(polygonGraphic);
验证面图形位置是否正确。
创建弹出窗口
单击图形时,一般会显示图形的弹出窗口。以下代码我们展示如何在弹出窗口中显示面图形名称和描述。代码中使用了 attribute
和 popupTemplate
属性。
首先,定义图形的
popupTemplate
和attributes
。jsconst simpleFillSymbol = { type: "simple-fill", color: [227, 139, 79, 0.8], , opacity 80% outline: { color: [255, 255, 255], width: 1 } }; const popupTemplate = { title: "{Name}", content: "{Description}" } const attributes = { Name: "Graphic", Description: "I am a polygon" }
然后修改
polygonGraphic
定义,赋值popupTemplate
和attribute
属性。jsconst polygonGraphic = new Graphic({ geometry: polygon, symbol: simpleFillSymbol, attributes: attributes, popupTemplate: popupTemplate }); graphicsLayer.add(polygonGraphic);
运行应用程序
在 CodePen 中,运行代码以显示地图。
地图应显示所有三个图形。单击面时,它会显示弹出窗口。
下一步是什么?
要了解如何使用其他API 功能,请参阅以下教程: