arcgis for js中setScaleRange怎么用

<script type="text/javascript">  
dojoConfig = {
parseOnLoad: false,
packages: [{
name: 'gglib',
location: this.location.pathname.replace(/\/[^/]+$/, "")+"/js/gglib"
}]
};
</script>
<script src="http://****/arcgis_js_api/library/3.12/3.12/init.js"></script>
<script>
var map, graphicLayer, tmpLayer;
require([
"esri/map", "esri/layers/KMLLayer", "dojo/parser", "dojo/dom-style",
"gglib/GoogleSateliteLayer", "gglib/GoogleRoadLayer", "esri/layers/GraphicsLayer",
"dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dojo/domReady!"
], function(
Map, KMLLayer,
parser, domStyle, GoogleSateliteLayer, GoogleRoadLayer, GraphicsLayer
) {
map = new Map("map", {
logo: false,
zoom: 10,
center: [119.11, 25.38],
//minZoom: 10,
maxZoom: 18
});
parser.parse();

var vecMap = new GoogleSateliteLayer();
map.addLayer(vecMap);
//var roadMap = new GoogleRoadLayer();
//map.addLayer(roadMap);

var kml1 = new KMLLayer(url1);
map.addLayer(kml1);
kml1.on("load", function() {
domStyle.set("loading", "display", "none");
});

var kml5 = new KMLLayer(url2);
map.addLayer(kml5);
kml5.on("load", function() {
domStyle.set("loading", "display", "none");
kml5.setScaleRange(10000000,1000000);
});

graphicLayer = new GraphicsLayer();
map.addLayer(graphicLayer);
});
小弟用上面这段代码,加载并展示了谷歌地图切片。
kml1和kml5也可以正常展示,但是setScaleRange对kml5的限制依然不起作用.
问题已解决,楼主对domStyle.set函数的作用毫不知情,html元素中并没有loading这个元素,导致kml5的load函数执行失败。
  
-----------原问题-------------https://developers.arcgis.com/ ... s_kml
这个demo,楼主在kmlLayer的定义下加了一句
kml.setScaleRange(800,900);
然而并没半毛钱用处。

求助各位大佬,setScaleRange应该怎么用,百度了半天没找到答案


<script src="https://js.arcgis.com/3.20/%26 ... gt%3B
<script>
var map;
require([
"esri/map", "esri/layers/KMLLayer",
"dojo/parser", "dojo/dom-style",


"dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dojo/domReady!"
], function(
Map, KMLLayer,
parser, domStyle
) {
map = new Map("map", {
basemap: "topo",
center: [-108.663, 42.68],
zoom: 6
});


parser.parse();


var kmlUrl = "https://esri.box.com/shared/st ... 3B%3B
var kml = new KMLLayer(kmlUrl);
kml.setScaleRange(800,900);
map.addLayer(kml);
kml.on("load", function() {
domStyle.set("loading", "display", "none");
});
});
</script>
</head>
解决方案:将kml.setScaleRange函数放到load函数中即可,感谢李阳大牛。
已邀请:

swaggyP - 网络粉刷匠

赞同来自: warden

你在kml的load事件里面绑定,参考图片
scale.png

warden

赞同来自:

我的想法是,让这个kml图层在放大到一定程度时才展示出来,求助大牛如何实现

要回复问题请先登录注册