Я пытаюсь реализовать слои деталей (LOD) на нескольких настраиваемых базовых картах с помощью ArcGIS Javascript API 3.17. Один предназначен для меньшей детализации, а два других используются для большей детализации, но охватывают разные зоны. У меня возникают проблемы, но страница не загружается (для Firefox и IE). Кто-нибудь может увидеть то, чего я не вижу? Обратите внимание, что здесь я использовал несколько примеров услуг. Кроме того, я добавил несколько динамических слоев в свою реальную реализацию, которые я здесь не включил.
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>";
}
}
});
addLods
вызывается только один раз, поэтомуinitMap
не будет вызываться. Пожалуйста, отредактируйте, используя правильный код. - person T Kambi   schedule 07.09.2016