V ArcGIS API 4 pro JavaScript byl představen nový typ vrstvy, který vám pomůže spravovat seskupování vašich vrstev do stejnomyslných<\/EM> kategorií. GroupLayer<\/A> poskytuje opravdu zajímavou funkčnost, která vám umožní dělat prakticky přesně to, co název říká, seskupovat vaše vrstvy<\/EM>.<\/P><\/P>Předpokládejme, že máte Dynamic Map Service, například tento NOAA Storm Reports service<\/A>. Jedná se o užitečnou službu, která poskytuje rychlý přehled o hlášeních bouří. Nicméně je to dynamická mapová služba, která by se normálně zobrazovala v MapImageLayer<\/A>, ale tento typ vrstvy (dříve známý jako ArcGISDynamicMapServiceLayer) nepodporuje pop-up okna v počáteční verzi 4.0.<\/P><\/P>Je možné, že data za těmito body mohou být užitečná, takže možná budete chtít zobrazovat pop-up okna pro ně ve vaší aplikaci.<\/P><\/P>Existuje jednoduchý způsob, jak to obejít – můžete použít každou jednotlivou vrstvu ve službě jako FeatureLayer<\/A> a definovat pop-up okna a vše bude zase v pořádku. Ale možná máte v aplikaci nějakou logiku, která vyžaduje zacházet s těmito daty jako s jednou vrstvou, například je všechny vypnout jediným kliknutím na tlačítko.<\/P><\/P>Nyní budete chtít obejmout svůj GroupLayer.<\/EM><\/P><\/P>Pojďme se podívat, jak by mohl vypadat kód pro toto.<\/P><\/P>require([ "esri\/Map", "esri\/views\/MapView", "esri\/layers\/FeatureLayer", "esri\/layers\/GroupLayer"], function (Map, MapView, FeatureLayer, GroupLayer) { var url = "http:\/\/tmservices1.esri.com\/arcgis\/rest\/services\/LiveFeeds\/NOAA_storm_reports\/MapServer\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/<\/>"; var map = new Map({ basemap: "streets" }); var view = new MapView({ container: "viewDiv", map: map, center: [-98.648, 36.374], zoom: 5, ui: { components: ["zoom", "attribution", "compass"] } }); var titles = [ "NOAA HAIL Storm Reports (24 hodin)", "NOAA TORNADO Storm Reports (24 hodin)", "NOAA WIND Storm Reports (24 hodin)", "NOAA TORNADO Storm Reports (poslední týden)" ]; var layers = ["0", "1", "2", "3"].map(function(index, idx) { return new FeatureLayer({ url: url + index, outFields: ["*"], popupTemplate: { title: titles[idx], content: "{*}" } }); }); var groupLayer = new GroupLayer({ layers: layers, visibilityMode: "inherited", visible: true }); map.add(groupLayer); view.then(function() { var btn = document.createElement("div"); btn.className = "esri-button esri-widget-button esri-interactive esri-icon-feature-layer"; btn.title = "Přepnout data bouří"; view.ui.add(btn, "top-right"); btn.addEventListener("click", function() { groupLayer.visible = !groupLayer.visible; }); });});<\/PRE><\/P>Co jsme zde udělali je to, že jsme přidali data o hlášeních bouří jako jednotlivé FeatureLayers, ale zabalili jsme je do GroupLayer. Pak jsme přidali jednoduché tlačítko do UI, které dělá jednu věc. Přepíná viditelnost seskupených dat o bouřích zapnutou a vypnutou. Všimněte si, že jsem nastavil visibilityMode<\/SPAN> u GroupLayer na "inherited"<\/SPAN>. To znamená, že všechny podvrstvy zdědí svou viditelnost od nadřazeného GroupLayer. Můžete to změnit, pokud chcete mít nějakou podmíněnou viditelnost vrstev v GroupLayer a být kreativní, ale pro tento případ použití vše funguje jednoduše.<\/P><\/P>Můžete vidět živou ukázku této aplikace zde<\/A>.<\/P><\/P>Neomezujete se pouze na obalování FeatureLayers pomocí GroupLayer, můžete seskupit jakékoliv typy vrstev, což může být velmi výhodné při ovládání viditelnosti více mapových služeb ve vaší aplikaci.<\/P><\/P>Takže vyzkoušejte GroupLayer ve vaší další aplikaci ArcGIS API 4 pro JavaScript!<\/P><\/P>Pro více tipů a triků z geodev světa navštivte můj blog<\/A>.<\/P><\/P>Titulní foto od Mel Aclaro na group hug | Flickr - Photo Sharing!<\/A> <\/>
<\/P>
Je možné, že data za těmito body mohou být užitečná, takže možná budete chtít zobrazovat pop-up okna pro ně ve vaší aplikaci.<\/P>
Existuje jednoduchý způsob, jak to obejít – můžete použít každou jednotlivou vrstvu ve službě jako
Nyní budete chtít obejmout svůj GroupLayer.<\/EM><\/P><\/P>Pojďme se podívat, jak by mohl vypadat kód pro toto.<\/P><\/P>require([ "esri\/Map", "esri\/views\/MapView", "esri\/layers\/FeatureLayer", "esri\/layers\/GroupLayer"], function (Map, MapView, FeatureLayer, GroupLayer) { var url = "
Co jsme zde udělali je to, že jsme přidali data o hlášeních bouří jako jednotlivé FeatureLayers, ale zabalili jsme je do GroupLayer. Pak jsme přidali jednoduché tlačítko do UI, které dělá jednu věc. Přepíná viditelnost seskupených dat o bouřích zapnutou a vypnutou. Všimněte si, že jsem nastavil visibilityMode<\/SPAN> u GroupLayer na "inherited"<\/SPAN>. To znamená, že všechny podvrstvy zdědí svou viditelnost od nadřazeného GroupLayer. Můžete to změnit, pokud chcete mít nějakou podmíněnou viditelnost vrstev v GroupLayer a být kreativní, ale pro tento případ použití vše funguje jednoduše.<\/P><\/P>Můžete vidět
Neomezujete se pouze na obalování FeatureLayers pomocí GroupLayer, můžete seskupit jakékoliv typy vrstev, což může být velmi výhodné při ovládání viditelnosti více mapových služeb ve vaší aplikaci.<\/P>
Takže vyzkoušejte GroupLayer ve vaší další aplikaci ArcGIS API 4 pro JavaScript!<\/P>
Pro více tipů a triků z geodev světa navštivte
Titulní foto od Mel Aclaro na
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.