arcgis for javascript 之 clone()问题小计
- 情景再现:

var pgraphic;//被点击的graphic
mapViewInstance.on("click", function (evt) {
gLayer.removeAll();
pgraphic=null;
var data=null;
var screenPoint = {
x: evt.x,
y: evt.y
};
mapViewInstance.hitTest(screenPoint).then(function (response) {
// debugger;
data = response.results[0].graphic.attributes;
pgraphic = response.results[0].graphic;
// console.log("data: " + data);
// console.log("data.FID: " + data.FID);
setGraphicAttrbute(data.FID, pgraphic); // pgraphic.attributes ={
// "Acadimic": "1111",
// "Years": "Pinaceae",
// "UserName": 126
// }
pgraphic.popupTemplate = { // autocasts as new PopupTemplate()
title: "{Name}信息",
content: [{
type: "fields",
fieldInfos: fieldInfoData,
}]
};
var sym = SimpleFillSymbol({
color: "red",
outline: {
color: [128, 128, 128, 0.5],
width: "0.5px"
}
});
pgraphic.symbol=new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3));
gLayer.add(pgraphic); });
});
这样处理后,气泡和信息都能正常显示,但是出现一个奇怪的问题,第二次点击时候,第一次点击所产生的样式,并没有被完全remove掉。。

难道是,gLayer.removeAll() 没起作用?于此同时,各种refresh也不起作用。。。
我又回看了一次代码发现了端倪,
data = response.results[0].graphic.attributes;
pgraphic = response.results[0].graphic;
这里获取的graphic来自featurelayer,只是赋值给一个新变量而已,还是指向了featurelayer中那个graphic。。
pgraphic.symbol=new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3));;
所以,在给pgraphic设置样式的时候,同时也把样式设置到featurelayer上去了。
怎么解决这问题呢?两种解决思路,
1.获得一个全新的pgraphic
2在featurelayer上去除样式,(这个好像不行吧)
突然想起java中的深复制,js不熟悉,我现实不了,翻了翻api看到有 clone这个方法:Creates a deep clone of the graphic object. 这不就是“”深复制么”···
于是修改代码
pgraphic = response.results[0].graphic.clone();
得到一个全新的graphic,再次运行,问题不在啦。。。。。。

setGraphicAttrbute代码如下:
function setGraphicAttrbute(id, pgraphic) {
$.ajax({
type: "POST",
async: false,
url: server_context + "/gisBlock/queryid/" + id,
dataType: "json",
success: function (msg) {
console.log("Data Saved: " + msg.nameId);
var jsonData = "";
if (msg != null) {
pgraphic.attributes = {
"FID":msg.id,
"nameId": msg.nameId,
"academy": msg.academy,
"year": msg.year,
"userName": msg.userName,
"crops": msg.crops,
"area": msg.area,
"month":msg.month,
}
}
else {
pgraphic.attributes = {
"Acadimic": "未查询到相关结果"
}
}
}
});
}
初次学习,有什么不对请指正!
arcgis for javascript 之 clone()问题小计的更多相关文章
- javascript中数组方法小计
一:数组的常用方法: 1:join(); 将数组转为字符串显示.不输入参数,默认以逗号连接:输入参数,则以参数连接. var arr=[1,2,3]; console.log(arr.join()); ...
- arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
图层控制是非常多GIS系统里面必须的一个小功能,本文就说说arcgis for javascript下ArcGISDynamicMapServiceLayer图层控制的实现方式.首先看图: 实现效果 ...
- arcgis for JavaScript API 4.5与4.3的区别
arcgis 4.5与4.3区别: 鉴于本人使用4.3时间比较久,而arcgis for JavaScript API于9月28日推出了4.5版本,但是直接更换4.5的init.js会出现意想不到的错 ...
- 购物车功能:使用jQuery实现购物车全选反选,单选,商品增删,小计等功能
效果图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- vue 动态合并单元格、并添加小计合计功能
1.效果图 2.后台返回数据格式(平铺式) 3.后台返回数据后,整理所需要展示的属性存储到(items)数组内 var obj = { "id": curItems[i].id, ...
- 关于ArcGis for javascript的使用
1.引用ArcGis for javascript核心类库的两种方式: 1.1.下载js包,解压缩放入项目中 1.1.1.下载核心类库压缩文件, 下载地址: https://developers.ar ...
- SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计
表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...
- PB gird类型数据窗口 设置分组、分组小计、合计
今天遇到一个需求,gird表格数据如下: 部门 类型 数据 A 类型1 1 A 类型2 2 B 类型1 3 B 类型2 4 合计 10 实际需要显示的结果为: 部门 ...
- 简单的angular购物车商品小计
<!DOCTYPE html> <html lang="en" ng-app="shopApp"> <head> <m ...
随机推荐
- “玲珑杯”ACM比赛 Round #12题解&源码
我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧! A ...
- MyEclipse下打开ftl文件
转:http://blog.csdn.net/w410589502/article/details/51669028 1.Freemarker模板的文件后缀名 2.Freemarker其实是一种比 ...
- SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况
前言 在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQ ...
- Build your own linino system 编译你自己的linino系统
懒癌犯了,先简单写过程,之后有时间再补上每一步的理由吧.对着来一遍,有bug请留言,我会尝试回答.(づ ̄ 3 ̄)づ ------------------------------------------ ...
- windows系统下安装composer
使用安装程序安装 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer 安装完成后,将composer的b ...
- MyBatis解决字段名与实体类属性名不相同的冲突(四)
一.创建表和表数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no ), order_price FLOA ...
- Flask入门笔记(一)
一.程序的基本结构 1.1 最简单的Flask程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #coding=utf-8 # 初始化 from flask import Fla ...
- lucene原理及源码解析--核心类
马云说:大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了. 然而,我看到的是:在PC时代搞PC的,移动互联网时代搞移动互联网的,大数据时代搞大数据的,都是同一伙儿人 ...
- 机器学习:形如抛物线的散点图在python和R中的非线性回归拟合方法
对于样本数据的散点图形如函数y=ax2+bx+c的图像的数据, 在python中的拟合过程为: ##最小二乘法 import numpy as np import scipy as sp import ...
- Python Selenium设计模式-POM
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python s ...