ArcGIS API for javaScript-加载高德地图

ArcGIS API for javaScript-加载高德地图

准备
  1. 下载 arcgis api for javascript4.x 包
    链接:https://pan.baidu.com/s/1lTxKmKUSUREvd1WTRDy4xQ
    提取码:r9c5

  2. 部署服务

  • 把下载包部署到服务器中,比如说tomcat,nginx,IIS…
  • 在下载包library/downloads,有官方教程
    找到dojo.js, init.js文件,找到[HOSTNAME_AND_PATH_TO_JSAPI]并修改成你部署的服务目录。
    如:
    init.js

    dojo.js
    在这里插入图片描述
    因为在同一项目下所以使用相对路径

lib 在项目根目录

代码
  • 自定义高德矢量地图图层模块 此处GaodeLayer.js
/**
 * 两种方式定义 模块
 * 一 dojo/_base/declare  模式
 * 二 AMD模式
 *  
 */
define(["esri/layers/BaseTileLayer","esri/request","esri/Color"],
    function (BaseTileLayer,esriRequest,Color) {
        return  BaseTileLayer.createSubclass({
                properties: {
                    urlTemplate: null,
                    tint: {
                        value: null,
                        type: Color
                    }
    
                },
                getTileUrl: function(level, row, col) {
                    // return url = 'http://webrd0' + (col % 4 + 1) + '.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x=' + col + '&y=' + row + '&z=' + level;
                    return this.urlTemplate
                    .replace("{z}", level)
                    .replace("{x}", col)
                    .replace("{y}", row);
                },
                fetchTile: function(level, row, col) {
                    var url = this.getTileUrl(level, row, col);
                    return esriRequest(
                        url, {
                        responseType: "image",
                        allowImageDataAccess: true
                    })
                    .then(function(response) {
                        var image = response.data;
                        var width = this.tileInfo.size[0];
                        var height = this.tileInfo.size[0];
    
                        var canvas = document.createElement("canvas");
                        var context = canvas.getContext("2d");
                        canvas.width = width;
                        canvas.height = height;
    
                        context.drawImage(image, 0, 0, width, height);
    
                        return canvas;
                    }.bind(this));
                }
            })
        
    }
   
)

  • 集成页面代码
<!DOCTYPE html>

<html>

<head>
    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
    <title>infoMessage</title>
    <style>
        html,
        body,
        #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
        }
    </style>
    <!--  引入依赖样式 -->
    <link rel="stylesheet" href="/lib/arcgis_js_api/library/4.6/dijit/themes/tundra/tundra.css" />
    <link rel="stylesheet" href="/lib/arcgis_js_api/library/4.6/esri/css/main.css" />
    <link rel="stylesheet" href="/lib/arcgis_js_api/library/4.6/esri/themes/light/main.css" />

    <script>
        // 配置模板位置   此处GaodeLayer.js放在html同一目录下
       // 通过packages数组进行定义预置AMD模块, name是该模块标识符名称,localtion为模块所在的路径
       // 如果这个模块的路径是在根目录下的子目录 location.pathname.replace(/\/[^/]*$/, '') + '/js'
        var dojoConfig = {
            async: false,
            //  baseUrl: "/",
            // 用于页面加载时立即加载的JS依赖
            // deps: ["dojo/parser"],
            parseOnLoad: true,
            packages: [{
                name: "lib",
                location: '/lib'
            }]
        };
    </script>

    <!-- 初始化ArcGIS init.js文件 -->
    <script src="/lib/arcgis_js_api/library/4.6/init.js"></script>

    <script>
        require([
            "esri/Map",
            "esri/config",
            "esri/Color",
            "esri/views/MapView",
            "lib/GaodeLayer",
            "esri/views/SceneView",
            "dojo/domReady!"],
            function (Map,esriConfig,Color,MapView, GaodeLayer, SceneView) {
                //创建图层对象
                // var GaodeLayer = new GaodeLayer();
                
                esriConfig.request.corsEnabledServers.push("webst01.is.autonavi.com");
               
                let digitallTileLayer = GaodeLayer({
                    urlTemplate: 'http://webst01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
                    tint: new Color("#004FBB"),
                    title: "高德"
                });
                let satelliteTileLayer = GaodeLayer({
                    urlTemplate: 'http://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
                    tint: new Color("#004FBB"),
                    title: "高德"
                });

                let stamenTileLayer = GaodeLayer({
                    urlTemplate: 'http://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}',
                    tint: new Color("#004FBB"),
                    title: "高德"
                });


                var map = new Map({
                    layers: [satelliteTileLayer,stamenTileLayer]
                });

                var view = new MapView({
                    container: "viewDiv",
                    map: map,
                    center: [108.62, 36.32],
                    zoom: 4
                });
            });


    </script>
</head>

<body>
    <div id="viewDiv"></div>
</body>

</html>

参考:

官方API
地图整合参考
dojo模块化参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值