标签:code ctr esri style ace query 地图展示 spatial scale
写在前面的话:
1.百度地图是自己定义的坐标系统,wkid=102100.百度地图数据是加密的产物。下文将附上百度坐标与WGS84,谷歌等坐标系统转换方法(地理-地理),此方法并未亲测,据说准
2.百度地图可以直接加载经纬度坐标
3.百度地图如果加载的arcgis api中会出现坐标偏移,1.中已经解决了地理坐标转换,那么找到百度投影-地理坐标的转换方式,则arcgis就可以直接无偏加载了,网上很多方法,但是亲测不行。
4.天地图不是涉密数据,根据本文提供的类库,arcgis api for js可以直接加载。但是数据有略微的偏移
天地图的切片地图可以通过esri.layers.TiledMapServiceLayer来加载,在此将之进行了一定的封装,如下:
1、切片线划图——TDTLayer.js
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | define(["dojo/_base/declare",    "esri/layers/tiled"],    function (declare) {        returndeclare(esri.layers.TiledMapServiceLayer, {            constructor: function () {                this.spatialReference = newesri.SpatialReference({ wkid: 4326});                this.initialExtent = (this.fullExtent = newesri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference));                this.tileInfo = newesri.layers.TileInfo({                    "rows": 256,                    "cols": 256,                    "compressionQuality": 0,                    "origin": {                        "x": -180,                        "y": 90                    },                    "spatialReference": {                        "wkid": 4326                    },                    "lods": [                        { "level": 2, "resolution": 0.3515625, "scale": 147748796.52937502},                        { "level": 3, "resolution": 0.17578125, "scale": 73874398.264687508},                        { "level": 4, "resolution": 0.087890625, "scale": 36937199.132343754},                        { "level": 5, "resolution": 0.0439453125, "scale": 18468599.566171877},                        { "level": 6, "resolution": 0.02197265625, "scale": 9234299.7830859385},                        { "level": 7, "resolution": 0.010986328125, "scale": 4617149.8915429693},                        { "level": 8, "resolution": 0.0054931640625, "scale": 2308574.9457714846},                        { "level": 9, "resolution": 0.00274658203125, "scale": 1154287.4728857423},                        { "level": 10, "resolution": 0.001373291015625, "scale": 577143.73644287116},                        { "level": 11, "resolution": 0.0006866455078125, "scale": 288571.86822143558},                        { "level": 12, "resolution": 0.00034332275390625, "scale": 144285.93411071779},                        { "level": 13, "resolution": 0.000171661376953125, "scale": 72142.967055358895},                        { "level": 14, "resolution": 8.58306884765625e-005, "scale": 36071.483527679447},                        { "level": 15, "resolution": 4.291534423828125e-005, "scale": 18035.741763839724},                        { "level": 16, "resolution": 2.1457672119140625e-005, "scale": 9017.8708819198619},                        { "level": 17, "resolution": 1.0728836059570313e-005, "scale": 4508.9354409599309},                        { "level": 18, "resolution": 5.3644180297851563e-006, "scale": 2254.4677204799655}                    ]                });                this.loaded = true;                this.onLoad(this);            },            getTileUrl: function (level, row, col) {                return"http://t"+ col % 8+ ".tianditu.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&TILEMATRIX="+ level + "&TILEROW="+ row + "&TILECOL="+ col + "&FORMAT=tiles";            }        });    }); | 
 2、切片标注——TDTAnnoLayer.js
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | define(["dojo/_base/declare",    "esri/layers/tiled"],    function (declare) {        returndeclare(esri.layers.TiledMapServiceLayer, {            constructor: function () {                this.spatialReference = newesri.SpatialReference({ wkid: 4326});                this.initialExtent = (this.fullExtent = newesri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference));                this.tileInfo = newesri.layers.TileInfo({                    "rows": 256,                    "cols": 256,                    "compressionQuality": 0,                    "origin": {                        "x": -180,                        "y": 90                    },                    "spatialReference": {                        "wkid": 4326                    },                    "lods": [                        { "level": 2, "resolution": 0.3515625, "scale": 147748796.52937502},                        { "level": 3, "resolution": 0.17578125, "scale": 73874398.264687508},                        { "level": 4, "resolution": 0.087890625, "scale": 36937199.132343754},                        { "level": 5, "resolution": 0.0439453125, "scale": 18468599.566171877},                        { "level": 6, "resolution": 0.02197265625, "scale": 9234299.7830859385},                        { "level": 7, "resolution": 0.010986328125, "scale": 4617149.8915429693},                        { "level": 8, "resolution": 0.0054931640625, "scale": 2308574.9457714846},                        { "level": 9, "resolution": 0.00274658203125, "scale": 1154287.4728857423},                        { "level": 10, "resolution": 0.001373291015625, "scale": 577143.73644287116},                        { "level": 11, "resolution": 0.0006866455078125, "scale": 288571.86822143558},                        { "level": 12, "resolution": 0.00034332275390625, "scale": 144285.93411071779},                        { "level": 13, "resolution": 0.000171661376953125, "scale": 72142.967055358895},                        { "level": 14, "resolution": 8.58306884765625e-005, "scale": 36071.483527679447},                        { "level": 15, "resolution": 4.291534423828125e-005, "scale": 18035.741763839724},                        { "level": 16, "resolution": 2.1457672119140625e-005, "scale": 9017.8708819198619},                        { "level": 17, "resolution": 1.0728836059570313e-005, "scale": 4508.9354409599309},                        { "level": 18, "resolution": 5.3644180297851563e-006, "scale": 2254.4677204799655}                    ]                });                this.loaded = true;                this.onLoad(this);            },            getTileUrl: function (level, row, col) {                return"http://t"+ row % 8+ ".tianditu.cn/cva_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=c&TILEMATRIX="+ level + "&TILEROW="+ row + "&TILECOL="+ col + "&FORMAT=tiles";            }        });    }); | 
封装好之后就可以在页面调用了,调用的时候需要导入这些自定义的图层,导入方式为:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <script type="text/javascript">    dojoConfig = {        parseOnLoad: true,        packages: [{            name: ‘tdlib‘,            location: this.location.pathname.replace(/\/[^/]+$/, "")+"/js/tdlib"        }]    };</script><script src="http://localhost/arcgis_js_api/library/3.9/3.9/init.js"></script><script>    require(["tdlib/TDTLayer",        "tdlib/TDTAnnoLayer"],    function (TDTLayer,         TDTAnnoLayer    ){        var basemap = newTDTLayer();        map.addLayer(basemap);        var annolayer = newTDTAnnoLayer();        map.addLayer(annolayer);    });</script><br><br><span style="color: rgb(128, 0, 0);">完整调用代码:<br></span> | 
| 1 | <strong>[javascript]</strong> <a title="view plain"class="ViewSource"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">view plain</a><span data-mod="popu_168"> <a title="copy"class="CopyToClipboard"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">copy</a><span data-mod="popu_169"> <a title="print"class="PrintSource"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">print</a><a title="?"class="About"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">?</a><span class="tracking-ad"data-mod="popu_167"><a title="在CODE上查看代码片"style="text-indent: 0px;"href="https://code.csdn.net/snippets/635113"target="_blank"><img width="12"height="12"style="left: 2px; top: 1px; position: relative;"alt="在CODE上查看代码片"src="https://code.csdn.net/assets/CODE_ico.png"></a><span class="tracking-ad"data-mod="popu_170"><a title="派生到我的代码片"style="text-indent: 0px;"href="https://code.csdn.net/snippets/635113/fork"target="_blank"><img width="12"height="12"style="left: 2px; top: 2px; position: relative;"alt="派生到我的代码片"src="https://code.csdn.net/assets/ico_fork.svg"></a></span></span></span></span> | 
| 1 | <span style="color: rgb(128, 0, 0);"><br><br><br><!DOCTYPE html><br><html><br><head><br>    <meta http-equiv="Content-Type"content="text/html; charset=utf-8"/><br>    <title>Baidu Map</title><br>   <link rel="stylesheet"href="https://js.arcgis.com/3.17/esri/css/esri.css"><br>    <style><br>        html, body, #map {<br>            height: 100%;<br>            margin: 0;<br>            padding: 0;<br>        }<br>        .base-map-ano{<br>            position: absolute;<br>            right: 0pt;<br>            top:18pt;<br>            background: #e6edf1;<br>            border: #96aed1 1px solid;<br>            padding: 4px 5px;<br>            padding-left: 0px;<br>            padding-top: 0px;<br>            display: none;<br>            font-weight: normal;<br>        }<br>        .base-map{<br>            position: absolute;<br>            right: 15pt;<br>            top:15pt;<br>            background: #f0f0f0;<br>            border: #96aed1 1px solid;<br>            width: auto;<br>            height: auto;<br>            z-index: 99;<br>            font:normal 11px "宋体",Arial;<br>            color:#868686;<br>        }<br>        .base-map-switch{<br>            padding: 4px 8px;<br>            float: left;<br>        }<br>        .base-map-switch-active{<br>            background:#e6edf1;<br>            font-weight: bold;<br>            color: #4d4d4d;<br>        }<br>        .base-map-switch:hover{<br>            cursor: pointer;<br>        }<br>        .base-map-switch-center{<br>            border: 1px #96aed1 solid;<br>            border-top:none;<br>            border-bottom:none;<br>        }<br>    </style><br>    <script type="text/javascript"><br>        dojoConfig = {<br>            parseOnLoad: true,<br>            packages: [{<br>                name: ‘bdlib‘,<br>                location: this.location.pathname.replace(/\/[^/]+$/, "")+"/js/bdlib"<br>            }]<br>        };<br>    </script><br>    <script type="text/javascript"src="js/transformspatial.js"></script><br>    <script src="https://js.arcgis.com/3.17/"></script><br>    <script type="text/javascript"src="js/plugins/jquery-1.11.1.min.js"></script><br>    <script><br>       var test=GPS.mercator_encrypt(39.115698,117.264604);<br>       console.log(test);<br>        var map,showMap,anoCtrl;<br>        require(["esri/map",<br>            "bdlib/BDVecLayer",<br>            "bdlib/BDImgLayer",<br>            "bdlib/BDAnoLayer",<br>            "esri/layers/FeatureLayer",<br>            "esri/geometry/Point",<br>            "esri/SpatialReference",<br>            "dojo/domReady!"],<br>                function (Map,<br>                          BDVecLayer,<br>                          BDImgLayer,<br>                          BDAnoLayer,<br>                          FeatureLayer,<br>                          Point,<br>                          SpatialReference<br>                        ){<br>                    map = newMap("map", {<br>                        logo: false<br>                    });<br>                    var vecMap = newBDVecLayer();<br>                    var imgMap = newBDImgLayer();<br>                    var anoMap = newBDAnoLayer();<br>                    map.addLayer(vecMap);<br>                    map.addLayers([imgMap,anoMap]);<br>                    imgMap.hide(),anoMap.hide();<br>map.on("mouse-down",function(item){<br>                        mousedownlocation=item;<br>                        console.log(item.mapPoint.x+"||"+item.mapPoint.y);<br>                        //console.log(mousedownlocation.pageX+"down||down"+mousedownlocation.pageY);<br>                    })<br>                    var pt = newPoint(7795368.13681627, 2813270.0795953586, newSpatialReference({ wkid: 102100}));<br>                    map.centerAndZoom(pt, 19);<br>                    map.on("mouse-move",function(evt){<br>                      // console.log(evt);<br>                    })<br>                    showMap = function(layer){<br>                        //设置按钮样式<br>                        var baseMap = ["vec","img"];<br>                        for(var i= 0, dl=baseMap.length;i<dl;i++){<br>                            $("#"+baseMap[i]).removeClass("base-map-switch-active");<br>                        }<br>                        $("#"+layer).addClass("base-map-switch-active");<br>                        //设置显示地图<br>                        switch(layer){<br>                            case"img":{//影像<br>                                vecMap.hide();<br>                                imgMap.show();<br>                                $("#ano").show();<br>                                break;<br>                            }<br>                            default:{//地图<br>                                vecMap.show();<br>                                imgMap.hide(),anoMap.hide();<br>                                $("#ano").hide();<br>                                $("#chkAno").attr("checked",false);<br>                                break;<br>                            }<br>                        }<br>                    };<br>                    anoCtrl = function(){<br>                        if($("#chkAno").is(":checked")){<br>                            anoMap.show();<br>                        }<br>                        else{<br>                            anoMap.hide();<br>                        }<br>                    }<br>                });<br>    </script><br></head><br><body><br><div id="map"><br>    <div class="base-map"><br>        <div id="vec"class="base-map-switch base-map-switch-active"onclick="showMap(‘vec‘)">地图</div><br>        <div id="img"class="base-map-switch base-map-switch-center"onclick="showMap(‘img‘)">影像<br>            <div id="ano"class="base-map-ano"><br>                <input id="chkAno"type="checkbox"name="chkAno"value="chkAno"onchange="anoCtrl()"/>标注<br>            </div><br>        </div><br>    </div><br></div><br></body><br></html><br><br><br>百度地图可调用的有地图切片,影像切片,以及道路等POI切片,我将之用<span style="font-family: Consolas; font-size: 9pt;"><span style="font-family: Consolas; font-size: 9pt;">TiledMapServiceLayer做了扩展,成了BDAnoLayer,BDVecLayer,BDimgLayer三个图层,其代码如下:</span></span></span> | 
BDAnoLayer.js
BDVecLayer.js
BDimgLayer.js
| 1 2 | <span style="color: rgb(128, 0, 0);"><span style="font-family: Consolas; font-size: 9pt;"><span style="font-family: Consolas; font-size: 9pt;"><span style="font-family: Consolas;"><span class="tracking-ad"data-mod="popu_170"><strong>[javascript]</strong> <a title="view plain"class="ViewSource"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">view plain</a><span data-mod="popu_168"> <a title="copy"class="CopyToClipboard"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">copy</a><span data-mod="popu_169"> <a title="print"class="PrintSource"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">print</a><a title="?"class="About"href="http://blog.csdn.net/gisshixisheng/article/details/44853709#">?</a><span class="tracking-ad"data-mod="popu_167"><a title="在CODE上查看代码片"style="text-indent: 0px;"href="https://code.csdn.net/snippets/635113"target="_blank"><img width="12"height="12"style="left: 2px; top: 1px; position: relative;"alt="在CODE上查看代码片"src="https://code.csdn.net/assets/CODE_ico.png"></a><span class="tracking-ad"data-mod="popu_170"><a title="派生到我的代码片"style="text-indent: 0px;"href="https://code.csdn.net/snippets/635113/fork"target="_blank"><img width="12"height="12"style="left: 2px; top: 2px; position: relative;"alt="派生到我的代码片"src="https://code.csdn.net/assets/ico_fork.svg"></a></span></span></span></span></span></span></span></span></span> | 
| 1 | <span style="color: rgb(128, 0, 0);"> </span> | 
arcgis api for javascipt 加载天地图、百度地图
标签:code ctr esri style ace query 地图展示 spatial scale
原文地址:http://www.cnblogs.com/love540376/p/6307727.html