사용자가지도를 다른 위치로 이동하거나 스크롤 할 때 레이블을 다시로드하려고합니다. 현재 사용자가 일정 수준 이상으로 확대하면 레이블이로드되고 모든 것이 올바르게 작동합니다. 사용자가지도를 다른 상태로 옮기면 라벨이 사라지고 라벨을 다시 생성하려면 축소하고 다시 확대해야합니다.지도를 스크롤 할 때 라벨 다시로드
내가/업데이트 엔드 /로드 /에 onLoad 여기
를 업데이트 onZoomEnd 변경 한 코드입니다 : 새로운 3.7 제공하는 ESRI ArcGIS 자바 스크립트 API는 새로운 LabelLayer을 가지고,
function initUI(graphics) {
dojo.connect(globals.map, 'onZoomEnd', function() {
console.log("Initial zoom level is :" + globals.map.getZoom());
var font = new esri.symbol.Font(14, esri.symbol.Font.STYLE_NORMAL, esri.symbol.Font.VARIANT_NORMAL, esri.symbol.Font.WEIGHT_BOLDER, "Arial");
var gl = globals.featureLayers[1].graphics;
globals.map.graphics.clear();
if (globals.map.getZoom() >= 9) {
console.log(codeID);
for (var i = 0; i < gl.length ; i++) {
var g = globals.featureLayers[1].graphics[i];
if (codeID == 1 || codeID == 32 || codeID == 28 || codeID == 33 || codeID == 10) {
var strLabel = g.attributes.NAME + ":" + $.formatNumber(findFips(g), { format: '#,###', locale: "us" });//creates string label formatted
var textSymbol = new esri.symbol.TextSymbol(strLabel, font);//create symbol with attribute name
textSymbol.setColor(new dojo.Color([0, 0, 0]));//set the color
var pt = g.geometry.getExtent().getCenter(); //get center of county
var labelPointGraphic = new esri.Graphic(pt, textSymbol); //create label graphic
//add label to the intended graphic
globals.map.graphics.add(labelPointGraphic);
}
else {
var strLabelPct = g.attributes.NAME + " : " + $.formatNumber(findFips(g), {format: '#,###.0', locale: "us"}) + "%";
var textSymbol = new esri.symbol.TextSymbol(strLabelPct);//create symbol with attribute name
textSymbol.setColor(new dojo.Color([0, 0, 0]));//set the color
var pt = g.geometry.getExtent().getCenter(); //get center of county
var labelPointGraphic = new esri.Graphic(pt, textSymbol); //create label graphic
//add label to the intended graphic
globals.map.graphics.add(labelPointGraphic);
}
}//end for
}//end if
});//end on zoom end
1) 익스텐트 변경을 사용해보십시오. 2) 전체적인 점에 대해 다소 혼란 스럽습니다 ... 물건을 줌> 9로만 표시하려면 레이어 수준에서 설정할 수 있습니다. 그렇지 않으면 ... 왜 globals.featureLayers [1]'를 맵 자체에 추가하는 대신에이 모든 것을하고 있습니까? – Juffy
세 가지 맵은 특정 레벨을 확대하거나지도가 변경 될 때 확대됩니다. 레이어 1에 도달하면 라벨 및 데이터가 표시되는 범위가 표시됩니다. 그러나 처음 범위를 지나서 스크롤을 시작하면 그 밖의 아무 것도 나타나지 않습니다. 그것의 데이터를 전역에 추가하는 것입니다. featurelayer [1] 처음에지도에. 당신이 저울로 작성하고 onDemand로 만든 것입니다. –