当前位置:网站首页>arcgis js 4.x 地图中加入图片
arcgis js 4.x 地图中加入图片
2022-07-02 09:43:00 【Ostrich5yw】
arcgis js 4.x版本,如何加入图片
问题:如何将自定义图片放入到arcgis的图层当中?
本人在网上查找的方法中,发现大部分方法只适用于3.x版本,只有一种引入自定义BaseDynamicLayer的方法可用,然而按照这种方式,无法满足动态刷新图片的需求。
解决方法
step 1:还是使用BaseDynamicLayer引入图片
var mainMap = new Map({
basemap:"satellite",
ground: "world-elevation",
});
//创建MapView来存放各个图层
var mainView = new MapView({
map:mainMap,
container:"viewDiv",
center:[110.3147025,37.5991070],
zoom:13,
});
var CustomImageOverlayLayer = BaseDynamicLayer.createSubclass({
properties: {
picUrl: null,
extent: null,
image: null,
canvas: null,
},
// Override the getImageUrl() method to generate URL
// to an image for a given extent, width, and height.
getImageUrl: function (extent, width, height) {
//新Image对象,可以理解为DOM
if (!this.image) {
this.image = new Image();
}
this.image.src = this.picUrl;
// 创建canvas DOM元素,并设置其宽高和图片一样
if (!this.canvas) {
this.canvas = canvas = document.createElement("canvas");
}
this.canvas.width = 2000;
this.canvas.height = 2000;
//左上角坐标转换屏幕坐标,为了获取canvas绘制图片的起点
var mapPoint = {
x: this.extent.xmin,
y: this.extent.ymax,
spatialReference: {
wkid: 4326
}
};
var screenPoint = mainView.toScreen(mapPoint);
//根据extent范围计算canvas绘制图片的宽度以及高度
//左下角
var leftbottom = {
x: this.extent.xmin,
y: this.extent.ymin,
spatialReference: {
wkid: 4326
}
};
var screen_leftbottom = mainView.toScreen(leftbottom);
//右上角
var righttop = {
x: this.extent.xmax,
y: this.extent.ymax,
spatialReference: {
wkid: 4326
}
};
var screen_righttop = mainView.toScreen(righttop);
this.canvas.getContext("2d").drawImage(this.image, screenPoint.x, screenPoint.y, Math.abs(screen_righttop.x - screen_leftbottom.x), Math.abs(screen_righttop.y - screen_leftbottom.y));
return this.canvas.toDataURL("image/png");
}
});
const temp = ["t=0.png", "t=180.png","t=360.png","t=540.png","t=1080.png","t=1260.png","t=1440.png","t=1620.png","t=1800.png","t=1980.png","t=2160.png","t=2340.png","t=2520.png","t=2880.png","t=3060.png","t=3420.png","t=3600.png"] //待遍历的图片名称
var ImageOverlayLayer = new CustomImageOverlayLayer({
picUrl: "../images/changePic/"+temp[0], //图片路径
extent: {
xmin: 110.2237025, ymin: 37.5121070, xmax:110.4497025, ymax: 37.6551070} //图片位置(最大最小经纬度)
})
mainMap.add(ImageOverlayLayer, 0); //将图片图层放入mainMap,并设置在最底层
step 2(关键
):实现图片动态切换
function showTime()
{
ImageOverlayLayer.refresh()
}
setInterval(showTime, 1); //设置图层每秒自动刷新一次(很重要)
for(var i = 1; i < 17; i++) {
(function (i) {
setTimeout(function () {
//设置定时器,每三秒刷新后一张图片
ImageOverlayLayer.picUrl = "../images/changePic/"+temp[i] //更新图片路径并刷新图层
ImageOverlayLayer.refresh()
}, (i + 1) * 3000);
})(i)
}
至此,就可以实现在arcgis js 4.x,图片的动态切换了
边栏推荐
- 输入一个三位的数字,输出它的个位数,十位数、百位数。
- Natural language processing series (I) -- RNN Foundation
- Implementation of address book (file version)
- How to Easily Create Barplots with Error Bars in R
- Jenkins user rights management
- (C语言)八进制转换十进制
- CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节
- Brush questions --- binary tree --2
- Easyexcel and Lombok annotations and commonly used swagger annotations
- PyTorch搭建LSTM实现服装分类(FashionMNIST)
猜你喜欢
Power Spectral Density Estimates Using FFT---MATLAB
基于Arduino和ESP8266的Blink代码运行成功(包含错误分析)
H5,为页面添加遮罩层,实现类似于点击右上角在浏览器中打开
mysql表的增删改查(进阶)
Depth filter of SvO2 series
CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节
Jenkins voucher management
Seriation in R: How to Optimally Order Objects in a Data Matrice
Yygh-9-make an appointment to place an order
Natural language processing series (III) -- LSTM
随机推荐
H5,为页面添加遮罩层,实现类似于点击右上角在浏览器中打开
【C语言】十进制数转换成二进制数
BEAUTIFUL GGPLOT VENN DIAGRAM WITH R
How to Add P-Values onto Horizontal GGPLOTS
MSI announced that its motherboard products will cancel all paper accessories
Fabric. JS 3 APIs to set canvas width and height
PyTorch nn.RNN 参数全解析
深入理解PyTorch中的nn.Embedding
Larvel modify table fields
基于Arduino和ESP8266的连接手机热点实验(成功)
Leetcode739 每日温度
Leetcode209 subarray with the smallest length
ThreadLocal的简单理解
Flesh-dect (media 2021) -- a viewpoint of material decomposition
ORB-SLAM2不同线程间的数据共享与传递
Brush questions --- binary tree --2
[untitled] how to mount a hard disk in armbian
QT meter custom control
Log4j2
HOW TO ADD P-VALUES TO GGPLOT FACETS