ArcGIS API for JavaScript 4.9 设置 PictureMarkerSymbol 失效?

在地图上我又一个GraphicLayer层添加的Graphic类,如下图:

提问图1.png


提问图2.png

 
当我点击这个graphic时,想修改这个graphic的显示图标,我直接这样设置graphic下的symbol,但是没有效果。希望社区大佬们可以帮忙看看!
代码如下:
代码结构:

结构1.png

 


index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="https://js.arcgis.com/4.9/esri ... gt%3B
<script src="https://js.arcgis.com/4.9/%26q ... gt%3B
<style type="text/css">
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<div id="viewDiv">

</div>


<script src="jquery-1.12.4.js" type="text/javascript" charset="utf-8"></script>
<script src="graphic.js" type="text/javascript" charset="utf-8"></script>
<script src="main.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>



graphic.js

function doorGraphic(door){
this.doorDev = door;
this.geometry = {
type:"point",
x:door.longitude,
y:door.latitude
}
this.symbol = {
type:'picture-marker',
url:'img/icon1.jpg', //网络图片可能会导致跨域,保存下来作为本地调用
width:40,
height:40
}
}
doorGraphic.layerInit = function(){
doorGraphic.prototype = new graphic();
doorGraphic.prototype.show = function(){
console.log("show")
}
doorGraphic.prototype.setMySymbol = function(){
var newsymbol = {
type:'picture-marker',
url:'img/icon2.jpg',
width:40,
height:40
}
console.log(gp == this)
this.symbol = newsymbol;
}
}



main.js

require([
"esri/Map",
"esri/views/MapView",
"esri/layers/GraphicsLayer",
"esri/Graphic",
"dojo/domReady!"
], function(Map, MapView, GraphicsLayer, Graphic) {
window.graphic = Graphic;
//创建地图对象
var map = new Map({
basemap:"streets"
})
//2D视图对象
var view = new MapView({
map:map,
container:'viewDiv',
center:[113.050248,23.142054],
zoom:15
})
//图层
var graphiclayer = new GraphicsLayer();
map.add(graphiclayer)

//自定义的模拟数据
var data_door = [{
name:'door1',
id:"1413123123",
longitude:113.050248,
latitude:23.142054
},{
name:'door2',
id:"165345123",
longitude:113.055248,
latitude:23.146054
}]
//遍历加入graphic
for(var i = 0; i < data_door.length; i++){
doorGraphic.layerInit();
var layer = new doorGraphic(data_door[i]);
graphiclayer.add(layer)
}

view.on("click",function(event){
view.hitTest(event).then(function(response){
var gp = response.results[0].graphic
if(gp){
gp.setMySymbol();
}
})
})

})


已邀请:

要回复问题请先登录注册