arcgis js api 4.x 加载高德影像地图

本文介绍了如何使用ArcGIS JavaScript API 4.x版本扩展功能,集成高德地图的影像服务。通过自定义扩展类,实现了地图加载高德影像的功能,并提供了源码下载链接。

arcgis js api 4.x 加载高德影像地图

简介

arcgis js api 4.x  是esri 公司推出二三维一体化web gis 开发 api,该 js api 提供强大二三维可视化能力,这里通过typescript 扩展 arcgis js api4.x 实现高德影像地图服务加载。 

扩展类代码

import {
    subclass,
    property
} from "esri/core/accessorSupport/decorators";
import BaseTileLayer from "esri/layers/BaseTileLayer";
import request from "esri/request";
import {
    renderable,
    tsx
} from "esri/widgets/support/widget";

interface GDImageLayerParams extends __esri.LayerProperties {
    urlTemplate: string,
    tint: any
}

@subclass("esri.layers.GDImageLayer")
class GDImageLayer extends BaseTileLayer {
    private _elevation: any = null;
    constructor(params ? : GDImageLayerParams) {
        super(params);
    }

    @property()
    @renderable()
    urlTemplate: string;

    @property()
    @renderable()
    tint: any;


    public getTileUrl(level: any, row: any, col: any): any {
        return this.urlTemplate.replace("{z}", level).replace("{x}",
            col).replace("{y}", row);
    }

    public fetchTile(level: number, row: number, col: number, options: any): Promise < any > {
        const url = this.getTileUrl(level, row, col);
        return request(url, {
                responseType: "image",
                //   allowImageDataAccess: true
            })
            .then(function (response: any) {
                // when esri request resolves successfully
                // get the image from the response
                var image = response.data;
                var width = this.tileInfo.size[0];
                var height = this.tileInfo.size[0];

                // create a canvas with 2D rendering context
                var canvas = document.createElement("canvas");
                var context = canvas.getContext("2d");
                canvas.width = width;
                canvas.height = height;


                // Draw the blended image onto the canvas.
                context.drawImage(image, 0, 0, width, height);

                return canvas;
            }.bind(this));
    };
}
export = GDImageLayer;

扩展类调用

require([
            "esri/Map",
            "esri/layers/TileLayer",
            "esri/layers/FeatureLayer",
            "esri/views/SceneView",
            'esri/views/3d/externalRenderers',
            'js/GDImageLayer',
             "esri/config",
             "esri/Color",
            'esri/geometry/Point',
            'esri/geometry/Polygon',
            'esri/tasks/QueryTask',
            'esri/tasks/support/Query',
            "esri/layers/GraphicsLayer",
            "esri/layers/SceneLayer",
            "esri/Graphic",
            "esri/views/layers/support/FeatureFilter",
            "dojo/domReady!"
        ], function (
            Map,
            TileLayer,
            FeatureLayer,
            SceneView,
            externalRenderers,
            GDImageLayer,
            esriConfig,
            Color,
            Point,
            Polygon,
            QueryTask,
            Query,
            GraphicsLayer,
            SceneLayer,
            Graphic,
            FeatureFilter
        ) {
            var baselayer = new TileLayer({
                url: "http://server.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer",
            });
            var map = new Map();
            map.add(baselayer);

            esriConfig.request.corsEnabledServers.push("webst01.is.autonavi.com");
 
            var stamenTileLayer = new GDImageLayer({
              urlTemplate: "https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
              tint: new Color("#004FBB"),
              visible: true,
              title: "高德"
            });
            map.add(stamenTileLayer);

            view = new SceneView({
                container: "viewDiv",
                map: map,
                viewingMode: "global"
            });
        });

源码地址

下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ISpaceART

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值