ArcGIS API for javascript加载无偏移天地图(3版本)

3和4版本同理,本文以3api为例

效果图,同一位置在控制台输出坐标值信息

                                                                                             图一

                                                                                               图二

两次都是点击的天安门,可以看到在控制台中输出的坐标,Y值差别还是蛮大的。

代码如下

图一:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>3.X版本加载天地图(经纬度)</title>
    <link rel="stylesheet" href="https://js.arcgis.com/3.28/esri/css/esri.css">
    <script src="https://js.arcgis.com/3.28/"></script>
</head>
<!-- 3.21-3.28通用 -->
<style>
    html,
    body,
    #mapDiv {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
</style>

<script>
    require(['esri/map',
        'esri/layers/WebTiledLayer',
        'esri/layers/TileInfo',
        'esri/geometry/Point',
        "esri/dijit/OverviewMap",
        'dojo/domReady!'], function (Map, WebTiledLayer, TileInfo, Point, OverviewMap) {
            var map = new Map('mapDiv')
            var tileInfo = new TileInfo({
                dpi: 90.71428571427429,
                rows: 256,
                cols: 256,
                compressionQuality: 0,
                origin: {
                    x: -180,
                    y: 90
                },
                spatialReference: {
                    wkid: 4326
                },
                lods: [
                    { level: 2, levelValue: 2, resolution: 0.3515625, scale: 147748796.52937502 },
                    { level: 3, levelValue: 3, resolution: 0.17578125, scale: 73874398.264687508 },
                    { level: 4, levelValue: 4, resolution: 0.087890625, scale: 36937199.132343754 },
                    { level: 5, levelValue: 5, resolution: 0.0439453125, scale: 18468599.566171877 },
                    { level: 6, levelValue: 6, resolution: 0.02197265625, scale: 9234299.7830859385 },
                    { level: 7, levelValue: 7, resolution: 0.010986328125, scale: 4617149.8915429693 },
                    { level: 8, levelValue: 8, resolution: 0.0054931640625, scale: 2308574.9457714846 },
                    { level: 9, levelValue: 9, resolution: 0.00274658203125, scale: 1154287.4728857423 },
                    { level: 10, levelValue: 10, resolution: 0.001373291015625, scale: 577143.73644287116 },
                    { level: 11, levelValue: 11, resolution: 0.0006866455078125, scale: 288571.86822143558 },
                    { level: 12, levelValue: 12, resolution: 0.00034332275390625, scale: 144285.93411071779 },
                    { level: 13, levelValue: 13, resolution: 0.000171661376953125, scale: 72142.967055358895 },
                    { level: 14, levelValue: 14, resolution: 8.58306884765625e-005, scale: 36071.483527679447 },
                    { level: 15, levelValue: 15, resolution: 4.291534423828125e-005, scale: 18035.741763839724 },
                    { level: 16, levelValue: 16, resolution: 2.1457672119140625e-005, scale: 9017.8708819198619 },
                    { level: 17, levelValue: 17, resolution: 1.0728836059570313e-005, scale: 4508.9354409599309 },
                    { level: 18, levelValue: 18, resolution: 5.3644180297851563e-006, scale: 2254.4677204799655 },
                    { level: 19, levelValue: 19, resolution: 2.68220901489257815e-006, scale: 1127.23386023998275 },
                    { level: 20, levelValue: 2, resolution: 1.341104507446289075e-006, scale: 563.616930119991375 }
                ]
            })
             var vecLayer = WebTiledLayer('http://{subDomain}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=vec&STYLE=default&FORMAT=tiles&TILEMATRIXSET=w&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=cdfa92003ba0fc7d93bc36d2bdaeaba7', {
                subDomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
                tileInfo: tileInfo
            })
            // 矢量地图
            var labelLayer = WebTiledLayer('http://{subDomain}.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=cva&STYLE=default&FORMAT=tiles&TILEMATRIXSET=w&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=cdfa92003ba0fc7d93bc36d2bdaeaba7', {
                subDomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
                tileInfo: tileInfo
            })
            // 矢量注记图层
            map.addLayers([vecLayer, labelLayer])
            map.centerAndZoom(new Point({
                x: 109,
                y: 34.5,
                spatialReference: {
                    wkid: 4326
                }
            }), 3)
            var overviewMapDijit = new OverviewMap({
                map: map,
                visible: true
            });
            overviewMapDijit.startup();//鹰眼
            map.on("click", function (evt) {
                console.log(evt.mapPoint);
            });
        })

</script>

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

</html>

图二:

<!DOCTYPE html>
<html>


<head>

    <meta charset="utf-8">
    <title>3.X版本加载天地图(经纬度)</title>

    <link rel="stylesheet" href="https://js.arcgis.com/3.28/esri/css/esri.css">
    <script src="https://js.arcgis.com/3.28/"></script>
</head>

<!-- 3.21-3.28通用 -->

<style>
    html,
    body,
    #mapDiv {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
</style>

<script>
    require(['esri/map',
        'esri/layers/WebTiledLayer',
        'esri/layers/TileInfo',
        'esri/geometry/Point',
        "esri/dijit/OverviewMap",
        'dojo/domReady!'], function (Map, WebTiledLayer, TileInfo, Point, OverviewMap) {
            var map = new Map('mapDiv')
            var tileInfo = new TileInfo({
                dpi: 90.71428571427429,
                rows: 256,
                cols: 256,
                compressionQuality: 0,
                origin: {
                    x: -180,
                    y: 90
                },
                spatialReference: {
                    wkid: 4326
                },
                lods: [
                    { level: 0, levelValue: 1, resolution: 0.703125, scale: 295497593.05875003 },
                    { level: 1, levelValue: 2, resolution: 0.3515625, scale: 147748796.52937502 },
                    { level: 2, levelValue: 3, resolution: 0.17578125, scale: 73874398.264687508 },
                    { level: 3, levelValue: 4, resolution: 0.087890625, scale: 36937199.132343754 },
                    { level: 4, levelValue: 5, resolution: 0.0439453125, scale: 18468599.566171877 },
                    { level: 5, levelValue: 6, resolution: 0.02197265625, scale: 9234299.7830859385 },
                    { level: 6, levelValue: 7, resolution: 0.010986328125, scale: 4617149.8915429693 },
                    { level: 7, levelValue: 8, resolution: 0.0054931640625, scale: 2308574.9457714846 },
                    { level: 8, levelValue: 9, resolution: 0.00274658203125, scale: 1154287.4728857423 },
                    { level: 9, levelValue: 10, resolution: 0.001373291015625, scale: 577143.73644287116 },
                    { level: 10, levelValue: 11, resolution: 0.0006866455078125, scale: 288571.86822143558 },
                    { level: 11, levelValue: 12, resolution: 0.00034332275390625, scale: 144285.93411071779 },
                    { level: 12, levelValue: 13, resolution: 0.000171661376953125, scale: 72142.967055358895 },
                    { level: 13, levelValue: 14, resolution: 8.58306884765625e-005, scale: 36071.483527679447 },
                    { level: 14, levelValue: 15, resolution: 4.291534423828125e-005, scale: 18035.741763839724 },
                    { level: 15, levelValue: 16, resolution: 2.1457672119140625e-005, scale: 9017.8708819198619 },
                    { level: 16, levelValue: 17, resolution: 1.0728836059570313e-005, scale: 4508.9354409599309 },
                    { level: 17, levelValue: 18, resolution: 5.3644180297851563e-006, scale: 2254.4677204799655 },
                    { level: 18, levelValue: 19, resolution: 2.68220901489257815e-006, scale: 1127.23386023998275 },
                    { level: 19, levelValue: 20, resolution: 1.341104507446289075e-006, scale: 563.616930119991375 }
                ]
            })
            var vecLayer = WebTiledLayer('http://{subDomain}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=vec&STYLE=default&FORMAT=tiles&TILEMATRIXSET=c&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=cdfa92003ba0fc7d93bc36d2bdaeaba7', {
                subDomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
                tileInfo: tileInfo
            })
            // 矢量地图
            var labelLayer = WebTiledLayer('http://{subDomain}.tianditu.gov.cn/cva_c/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=cva&STYLE=default&FORMAT=tiles&TILEMATRIXSET=c&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=cdfa92003ba0fc7d93bc36d2bdaeaba7', {
                subDomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
                tileInfo: tileInfo
            })
            // 矢量注记图层
            map.addLayers([vecLayer, labelLayer])
            map.centerAndZoom(new Point({
                x: 109,
                y: 34.5,
                spatialReference: {
                    wkid: 4326
                }
            }), 3)

            var overviewMapDijit = new OverviewMap({
                map: map,
                visible: true
            });
            overviewMapDijit.startup();//鹰眼
            map.on("click", function (evt) {
                console.log(evt.mapPoint);
            });
        })

</script>

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

</html>

图二用了4490的服务,4326的lods,达到了纠正偏移的效果,同理也可以采用4490的lods,或者自己定义lods,后续写了代码补充上来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值