<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://js.arcgis.com/4.5/esri/css/main.css">
<script src="https://js.arcgis.com/4.5"></script>
<style type="text/css">
html,body,
#viewDiv{
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<script>
require(["esri/config","dojo/_base/declare","esri/layers/BaseTileLayer","esri/geometry/SpatialReference","esri/geometry/Extent","esri/layers/support/TileInfo","esri/Map","esri/views/MapView","dojo/domReady!"],function(esriConfig,declare,BaseTileLayer,SpatialReference,Extent,TileInfo,Map,MapView){
esriConfig.request.corsEnabledServers.push("http://online1.map.bdimg.com/");
var BaiduTileLayer=BaseTileLayer.createSubclass({
properties: {
urlTemplate: null
},
getTileUrl: function (level, row, col) {
var zoom = level - 1;
var offsetX = parseInt(Math.pow(2, zoom));
var offsetY = offsetX - 1;
var numX = col - offsetX, numY = (-row) + offsetY ;
var num = (col + row) % 8 + 1;
return this.urlTemplate.replace("{level}", level).replace("{col}",numX).replace("{row}", numY);
}
});
var map = new Map();
var view = new MapView({
container:"viewDiv",
map:map,
zoom:6,
center:[65,23]
});
var baidulayer = new BaiduTileLayer({
map.add(baidulayer);
view.on("click",function(evt){
alert(evt.mapPoint.longitude+":"+evt.mapPoint.latitude);
});
});
</script>
<div id="viewDiv"></div>
</body>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://js.arcgis.com/4.5/esri/css/main.css">
<script src="https://js.arcgis.com/4.5"></script>
<style type="text/css">
html,body,
#viewDiv{
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<script>
require(["esri/config","dojo/_base/declare","esri/layers/BaseTileLayer","esri/geometry/SpatialReference","esri/geometry/Extent","esri/layers/support/TileInfo","esri/Map","esri/views/MapView","dojo/domReady!"],function(esriConfig,declare,BaseTileLayer,SpatialReference,Extent,TileInfo,Map,MapView){
esriConfig.request.corsEnabledServers.push("http://online1.map.bdimg.com/");
var BaiduTileLayer=BaseTileLayer.createSubclass({
properties: {
urlTemplate: null
},
getTileUrl: function (level, row, col) {
var zoom = level - 1;
var offsetX = parseInt(Math.pow(2, zoom));
var offsetY = offsetX - 1;
var numX = col - offsetX, numY = (-row) + offsetY ;
var num = (col + row) % 8 + 1;
return this.urlTemplate.replace("{level}", level).replace("{col}",numX).replace("{row}", numY);
}
});
var map = new Map();
var view = new MapView({
container:"viewDiv",
map:map,
zoom:6,
center:[65,23]
});
var baidulayer = new BaiduTileLayer({
urlTemplate:"http://online1.map.bdimg.com/tile/?qt=tile&x={col}&y={row}&z={level}&styles=pl&scaler=1&udt=20171128" ,
spatialReference : new SpatialReference({ wkid: 102100 })
map.add(baidulayer);
view.on("click",function(evt){
alert(evt.mapPoint.longitude+":"+evt.mapPoint.latitude);
});
});
</script>
<div id="viewDiv"></div>
</body>
</html>
有一个问题,就是坐标的问题,加载的地图的坐标系为102100,一般用4326比较多,而改用4326不满足view的要求,所以,在作为底图时会有一些问题。
然而,天地图也是102100坐标系,但是中国的经纬度确是正确的???
所以,百度地图即便能加载显示出来,但是,由于坐标系的问题,依旧不能使用,而天地图可以使用的!
这也从侧面说明了,地理信息的数据基础是具有统一的坐标系,否则无法集成使用!