首页 / 浏览问题 / 其他 / 问题详情
iserver7c动态添加png图片
6EXP 2017年07月14日
利用SuperMap.Layer.Image间隔500ms动态添加一张png图片,代码如下:

function AddWeatherPngLayer() {
    var bottom = json_weather.radar_img[i][2][0];
    var top = json_weather.radar_img[i][2][2];
    var left = json_weather.radar_img[i][2][1];
    var right = json_weather.radar_img[i][2][3];

    var img_url = json_weather.radar_img[i][0];

    var options = { useCanvas: true, isBaseLayer: false };
    var bounds = new SuperMap.Bounds(left, bottom, right, top);
    var name = "Weather_Png" + i.toString();
    if (i == 0) {
        weatherlayer = new SuperMap.Layer.Image(
               name,
               img_url,
               bounds,
               options
               );
        map.addLayer(weatherlayer);
    }
    else {
        方法一:利用Layer.redraw(),没有任何反应,图片也不替换
       // weatherlayer.url = img_url;
        //weatherlayer.redraw();
        方法二:利用Layer.removeLayer()移除图片图层,在利用Map.addLayer()添加图片图层,图片替换的过程会一闪一闪的
        map.removeLayer(weatherlayer, false);
        weatherlayer = new SuperMap.Layer.Image(
                 name,
                 img_url,
                 bounds,
                 options
                 );
        map.addLayer(weatherlayer);

    }
    i++;
    if (i == json_weather.radar_img.length) {
        clearInterval(timer_weather);
        json_weather = null;
        timer_weather = null;
        i = 0;
        if (weatherlayer != null)
            map.removeLayer(weatherlayer, false);
        weatherlayer = null;
    }
}

2 个回答

您好,我这边测试了一下,间隔时间切换图片,用redraw()的方法是可以实现的,

建议查看一下你的url,代码是否有误,控制台是否有报错等

移除图层再重新添加的话加上你间隔时间较短,是会出现一闪一闪的效果的
1,603EXP 2017年07月14日
您好,您可以使用Layer.setVisibility,先设置所有image图层不可见,每过500s让其中一个image可见。
4,524EXP 2017年07月14日
...