ArcGIS API for JS 之 FeatureLayer(二)popupTemplate的使用

ArcGIS API for JS 之 FeatureLayer(二)popupTemplate的使用


1.Popup与PopupTemplate

Popup(弹窗)是View(视图类)的一个属性。每一个View的实例都有一个popup,但是popup的表现形式和样式由每个layer或者Graphic的popupTemplate决定。如果没有设置popupTemplate,则popup会根据默认样式显示。

因此,Popup服务于View,PopupTemplate服务于Layer和Graphic。

相较于Popup来说,PopupTemplate属性字段比较少,但可定制程度更高:

以弹框的主要部分title和content来看,Popup的title和content类型单一,主要取string类型,而PopupTemplate的title、content还可以是一个方法,content甚至可以是Object[],这就使PopupTemplate可以更灵活的表达我们想展示的内容。

2.创建一个图层的popupTemplate

this.myFeatureLayer.popupTemplate = this.myFeatureLayer.createPopupTemplate();
this.myFeatureLayer.popupTemplate = {
   
	title: "详情",
	content:"……",
	overwriteActions: true,
	actions:[{
   
		title: "巡查记录",
		id: 'PatrolRecord'
	}]
};

3.标题设置(PopupTemplate.)

可以采用以下方式定义标题模板:

  • String:可以采用简单的字符串,也可加入要素的某些属性字段,下面代码段中的{NAME}就是图层的字段名。
let popupTemplate = {
   
 title: "Population in {NAME} County",
 outFields: ["*"]
};
  • Function:如果使用函数,当单击feature时,该feature将作为参数传递给函数,函数内部可以访问其图形和属性,函数执行并返回一个值作为显示在弹出模板中的标题。
let popupTemplate = {
   
 title<
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现多边形选择FeatureLayer中的要素,可以通过使用ArcGIS API for JavaScript中的GeometryEngine类来实现。具体步骤如下: 1. 定义多边形 首先,定义一个多边形,可以使用ArcGIS API for JavaScript中的Polygon类来创建。例如: ```javascript var polygon = new Polygon({ "rings": [[[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], "spatialReference": { "wkid": 4326 } }); ``` 这个多边形由五个点组成,可以通过rings属性设置。这里的空间参考系为4326。 2. 获取FeatureLayer 使用ArcGIS API for JavaScript中的FeatureLayer类获取要素图层。例如: ```javascript var featureLayer = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3" }); ``` 这里获取的是Census地图服务中的第3个图层。 3. 查询要素 使用FeatureLayer类的queryFeatures方法查询要素。例如: ```javascript var query = featureLayer.createQuery(); query.geometry = polygon; query.spatialRelationship = "intersects"; featureLayer.queryFeatures(query).then(function(result) { // 处理查询结果 }); ``` 这里的查询条件为多边形和图层的交集。 4. 高亮显示选中的要素 查询结果中包含了符合条件的要素,可以遍历这些要素,对它们进行高亮显示。例如: ```javascript var features = result.features; for (var i = 0; i < features.length; i++) { var feature = features[i]; feature.symbol = new SimpleFillSymbol({ color: [255, 0, 0, 0.5], style: "solid", outline: { color: [255, 0, 0], width: 1 } }); featureLayer.graphics.add(new Graphic(feature.geometry, feature.symbol)); } ``` 这里使用SimpleFillSymbol类创建一个红色的填充符号,将选中的要素的符号设置为该填充符号,并将它们添加到图层上。 完整代码如下: ```javascript require([ "esri/Map", "esri/views/MapView", "esri/layers/FeatureLayer", "esri/geometry/Polygon", "esri/geometry/geometryEngine", "esri/symbols/SimpleFillSymbol", "esri/Graphic" ], function(Map, MapView, FeatureLayer, Polygon, geometryEngine, SimpleFillSymbol, Graphic) { var polygon = new Polygon({ "rings": [[[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], "spatialReference": { "wkid": 4326 } }); var featureLayer = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3" }); var map = new Map({ basemap: "gray-vector", layers: [featureLayer] }); var view = new MapView({ container: "viewDiv", map: map, center: [-122.4194, 37.7749], zoom: 12 }); view.when(function() { var query = featureLayer.createQuery(); query.geometry = polygon; query.spatialRelationship = "intersects"; featureLayer.queryFeatures(query).then(function(result) { var features = result.features; for (var i = 0; i < features.length; i++) { var feature = features[i]; feature.symbol = new SimpleFillSymbol({ color: [255, 0, 0, 0.5], style: "solid", outline: { color: [255, 0, 0], width: 1 } }); featureLayer.graphics.add(new Graphic(feature.geometry, feature.symbol)); } }); }); }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值