使用ArcGIS Javascript API 3.17为自定义底图设置详细级别
我正在尝试使用ArcGIS Javascript API 3.17在一些自定义底图上实现细节层(LOD)。一个用于较小的细节,另两个用于较大的细节,但覆盖不同的区域。我有问题,但是页面没有加载(对于Firefox和IE)。有人能看到我没有看到的东西吗?注意,我在这里使用了一些示例服务。此外,我在我的实际实现中添加了一些动态特性层,这里没有包括这些使用ArcGIS Javascript API 3.17为自定义底图设置详细级别,javascript,arcgis,arcgis-js-api,Javascript,Arcgis,Arcgis Js Api,我正在尝试使用ArcGIS Javascript API 3.17在一些自定义底图上实现细节层(LOD)。一个用于较小的细节,另两个用于较大的细节,但覆盖不同的区域。我有问题,但是页面没有加载(对于Firefox和IE)。有人能看到我没有看到的东西吗?注意,我在这里使用了一些示例服务。此外,我在我的实际实现中添加了一些动态特性层,这里没有包括这些 var map; var extent; var baseMapLayerPPT; var baseMapLayerPoly; var customL
var map;
var extent;
var baseMapLayerPPT;
var baseMapLayerPoly;
var customLods = [];
var loadCount = 0;
require([
"esri/geometry/Extent","esri/map", "esri/dijit/Search", "esri/layers/ArcGISDynamicMapServiceLayer","esri/layers/FeatureLayer", "esri/InfoTemplate", "dojo/domReady!"
], function (Extent, Map, Search, DynamicMapServiceLayer, FeatureLayer, InfoTemplate) {
baseMapLayerPoly = new esri.layers.ArcGISTiledMapServiceLayer("https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer", {
displayLevels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
});
baseMapLayerPoly.on("load", addLods);
baseMapLayerPPT = new ArcGISTiledMapServiceLayer("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", {
displayLevels: [11, 12, 13, 14, 15 ],
//opacity : 0.75
});
extent = new esri.geometry.Extent({
"xmin":-91070.37,"ymin":7988806.64,"xmax":301214.62,"ymax":8227343.05,
"spatialReference":{"wkid":3297}
});
// popuplate an array with zoom levels
function addLods(evt) {
customLods = customLods.concat(evt.layer.tileInfo.lods);
loadCount++;
if (loadCount === 2) {
initMap();
}
}
// create the map and use the custom zoom levels
function initMap() {
map = new Map("mapDiv", {
center: [-150, -17],
zoom: 9,
lods : customLods
});
map.on("extent-change", changeScale);
map.addLayers([baseMapLayerPoly,baseMapLayerPPT);
}
//Report which layer is being shown
function changeScale(evt) {
dom.byId("scale").innerHTML = "Level: <i>" + evt.lod.level;
if (evt.lod.level < 11) {
dom.byId("visibleLayer").innerHTML = "Layer: <i>Imagery</i>";
} else if (evt.lod.level == 11) {
// both layers are loaded
dom.byId("visibleLayer").innerHTML = "<i>Both layers currently visible</i>";
} else {
dom.byId("visibleLayer").innerHTML = "Layer: <i>Streets</i>";
}
}
});
var映射;
var范围;
var BaseMapLayerPt;
var baseMapLayerPoly;
var customLods=[];
var loadCount=0;
要求([
“esri/geometry/Extent”、“esri/map”、“esri/dijit/Search”、“esri/layers/ArcGisDynamicMapsServiceLayer”、“esri/layers/FeatureLayer”、“esri/InfoTemplate”、“dojo/domReady!”
],功能(范围、地图、搜索、DynamicMapServiceLayer、FeatureLayer、信息模板){
baseMapLayerPoly=新的esri.layers.ArcGISTiledMapServiceLayer(“https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer", {
显示级别:[0,1,2,3,4,5,6,7,8,9,10,11]
});
baseMapLayerPoly.on(“加载”,添加LODS);
BaseMapLayerPt=新的ArcGISTiledMapServiceLayer(“https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", {
显示级别:[11,12,13,14,15],
//不透明度:0.75
});
区段=新esri.GEOMETY.extent({
“xmin”:-91070.37,“ymin”:7988806.64,“xmax”:301214.62,“ymax”:8227343.05,
“空间参考”:{“wkid”:3297}
});
//使用缩放级别弹出阵列
函数addLods(evt){
customLods=customLods.concat(evt.layer.tileInfo.lods);
loadCount++;
如果(loadCount==2){
initMap();
}
}
//创建地图并使用自定义缩放级别
函数initMap(){
map=新映射(“mapDiv”{
中心:[-150,-17],
缩放:9,
lods:自定义lods
});
地图上(“范围变化”,变化比例);
addLayers([baseMapLayerPoly,baseMapLayerPPT];
}
//报告正在显示的图层
功能变化量表(evt){
dom.byId(“scale”).innerHTML=“Level:+evt.lod.Level;
如果(evt.lod.level<11){
dom.byId(“visibleLayer”).innerHTML=“层:图像”;
}else if(evt.lod.level==11){
//两个层都已加载
dom.byId(“visibleLayer”).innerHTML=“当前可见的两个层”;
}否则{
dom.byId(“visibleLayer”).innerHTML=“Layer:Streets”;
}
}
});
好吧,我在上面的代码中发现了一些错误-
ArcGISTiledMapServiceLayer
中未提及initMap();
未被此行触发-basemappayerpoly.on(“load”,addLods);
lods:customLods
正在导致另一个错误map.on(“范围更改”,changeScale);
导致错误,因为html不存在
简单地图
html,
身体,
#地图{
身高:100%;
保证金:0;
填充:0;
}
var映射;
var范围;
var BaseMapLayerPt;
var baseMapLayerPoly;
var customLods=[];
var loadCount=0;
要求([
“esri/geometry/Extent”、“esri/map”、“esri/dijit/Search”、“esri/layers/ArcGistiledMapsServiceLayer”、“esri/layers/ArcGisDynamicMapsServiceLayer”、“esri/layers/FeatureLayer”、“esri/InfoTemplate”、“dojo/domReady!”
],功能(范围、地图、搜索、ArcGISTiledMapServiceLayer、DynamicMapServiceLayer、FeatureLayer、信息模板){
baseMapLayerPoly=新的ArcGISTiledMapServiceLayer(“https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer", {
显示级别:[0,1,2,3,4,5,6,7,8,9,10,11]
});
baseMapLayerPoly.on(“加载”,添加LODS);
BaseMapLayerPt=新的ArcGISTiledMapServiceLayer(“https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", {
显示级别:[11,12,13,14,15],
//不透明度:0.75
});
initMap();
区段=新区段({
“xmin”:-91070.37,
“ymin”:7988806.64,
“xmax”:301214.62,
“ymax”:8227343.05,
“空间参考”:{
“wkid”:3297
}
});
//使用缩放级别弹出阵列
函数addLods(evt){
customLods=customLods.concat(evt.layer.tileInfo.lods);
loadCount++;
如果(loadCount==2){
initMap();
}
}
//创建地图并使用自定义缩放级别
函数initMap(){
地图=新地图(“地图”{
中心:[-150,-17],
缩放:9/,
//lods:自定义lods
});
//地图上(“范围变化”,变化比例);
addLayers([baseMapLayerPoly,baseMapLayerPPT]);
}
//报告正在显示的图层
功能变化量表(evt){
dom.byId(“scale”).innerHTML=“Level:+evt.lod.Level;
如果(evt.lod.level<11){
dom.byId(“visibleLayer”).innerHTML=“层:图像”;
}否则
var tilelods = [
{
"level": 0,
"resolution": 156543.03392800014,
"scale": 5.91657527591555E8
},
{
"level": 1,
"resolution": 78271.51696399994,
"scale": 2.95828763795777E8
},
{
"level": 2,
"resolution": 39135.75848200009,
"scale": 1.47914381897889E8
},
.
.
.
{
"level": 15,
"resolution": 4.77731426794937,
"scale": 18055.954822
}
];
map = new Map("mapDiv", {
center: [-150, -17],
zoom: 9,
lods : tilelods
});