Daha çox

FeatureLayer fullExtent, Dojo ContentPane yan paneli tərəfindən məhdudlaşdırılır


Burada göstərilənə bənzər bir Dojo BorderContainer / ContentPane şablonunda olan bir xəritədə bir FeatureLayer göstərən bir ArcGIS JavaScript tətbiqetməm var. Xəritəni vahid FeatureLayer-in tam həcmində işə salmağa çalışıram. Bunu belə yerinə yetirirəm:

map.on ("layer-add-result", function (evt) {map.setExtent (evt.layers [0] .layer.fullExtent)});

Ancaq xəritənin ucundakı nöqtələrin kəsildiyini görürəm. Konkret olaraq, bu, ABŞ-ın şərq və orta qərbindəki bir nöqtə təbəqəsidir, lakin Kaliforniyada bir neçə, Fransada bir nöqtə var. CA və Fransadakı nöqtələr xəritənin xaricindədir.

Hunch, məzmunun heç bir ContentPane yan panelinin olmadığı fərz edildiyi, daha sonra ContentPane göstərildikdən sonra daha kiçik görünüş pəncərəsinə yerləşdirildiyi idi. Bu nəzəriyyəni səhifənin eninin 100% -ni əhatə edən bir xəritə yaratmaqla sınadım. Əlbəttə, problem aradan qalxdı.

Bunu necə təmin edə bilərəm?map.setExtent ()ContentPane yan panellərini nəzərə alır? Mən onsuz da tələb edirəmdomReady!və zəngparser.parse (). İtkin düşdüyüm başqa bir şey var?

2/24 tarixində daha ətraflı məlumat ilə düzəldildi

Əlavə etməyimi unutdum ki, əsasən FeatureLayer-dakı nöqtələr üçün atribut cədvəli rolunu oynayan bir FeatureTable var. FeatureTable seçimi təmizləndikdə xəritəni tam ölçüdə uzağa aparacaq şəkildə qurdum. Bu böyütmə meydana gəldikdə, xəritə düzgün ölçülərə yaxınlaşdırır və bütün nöqtələri özündə birləşdirir. Bu, map.setExtent-ə edilən ilk zəng səhifənin əvvəlcə yükləndiyi zaman xəritənin daha kiçik görünüş hissəsindən "xəbərdar" olmadığı nəzəriyyəmi gücləndirir. edir səhifə tam yükləndikdən sonra.


Zəng edinmap.resize ()ContentPane göstərildikdən və xəritə div ölçüsü dəyişdirildikdən sonra. Siz də istifadə etməli ola bilərsinizmap.reposition ()divin köçürülüb köçürülməməsindən asılı olaraq.

ContentPane-in yenidən yerləşdirilməsindən sonra getməsindən əmin olmaq barədə şərhinizə cavab olaraq redaktə edin:

Window.onload-dan sonra qoymaq, hər şey tamamilə yükləndikdən sonra atəş etdiyinə əmin olacaq:

window.onload = function () {map.resize (); dərəcənizi təyin etmək üçün funksiya}

Bu şəkildə xəritə divinin yenidən böyüməsinə səbəb olan bölmələr də daxil olmaqla hər şey yüklənəcək və sonra xəritənin ölçüsünü dəyişib istədiyiniz ölçüdə böyüdəcəksiniz.


Bu sualla əlaqədar Esri texniki dəstəyi ilə əlaqə qurdum. Mənə olduğunu xatırlatdılarsetExtentfunksiya iki giriş dəyişənini alır:setExtent (dərəcə, uyğun?). Theuyğundəyişən təyin edilmişdiryalanvarsayılan olaraq, ancaq funksiya sənədlərinə görə, döşəməli xəritə xidməti təbəqələri olan hər hansı bir xəritənin ekranda "yerləşməsinə" zəmanət verir.

Beləliklə, bu problemi düzəldə bildim və orijinal kodu aşağıdakı düzəlişlə istədiyiniz nəticəni əldə etdim:

Köhnə (səhv)

map.on ("layer-add-result", function (evt) {map.setExtent (evt.layers [0] .layer.fullExtent)});

Yeni (düzgün)

map.on ("layer-add-result", function (evt) {map.setExtent (evt.layers [0] .layer.fullExtent, true)});