<\/P>
Pojďme to udělat krátké a výstižné. Kolikrát jste pracovali s ArcGIS API for JavaScript a museli jste přiblížit na prvek. Zdráhali jste se nad některým z podivných chování použití map#centerAndZoom<\/A>? Možná jste si psali nějaké switch\/case nebo if\/else příkazy, abyste přiblížili mapu podle toho, zda přibližujete na bod, polygon nebo polylinii.<\/SPAN><\/SPAN><\/P><\/P>Přečtěte si dokumentaci<\/STRONG><\/SPAN><\/P>Než se podíváme na to, jak snadno přiblížit na prvky, pojďme se podívat, proč vás metoda centerAndZoom mapy nemá ráda.<\/SPAN><\/P>Signatura metody centerAndZoom je centerAndZoom(mapPoint, levelOrFactor). Co znamená levelOrFactor? Podívejme se na definici.<\/SPAN><\/P><\/P>"<\/STRONG>Při použití <\/SPAN>ArcGISTiledMapServiceLayer<\/STRONG><\/SPAN> je mapa přiblížena na specifikovanou úroveň. Při použití <\/SPAN>DynamicMapServiceLayer<\/STRONG><\/SPAN> je mapa přiblížena nebo oddálena o specifikovaný faktor. Například použijte 0.5 pro přiblížení dvakrát více a 2.0 pro oddálení dvakrát více."<\/STRONG><\/SPAN><\/EM><\/SPAN><\/P><\/P>To je mnohem lepší. Ne? Stále zmatení? Dobře, v podstatě pokud používáte <\/SPAN>ArcGISTiledMapServiceLayer <\/SPAN>můžete přiblížit mapu na konkrétní úroveň detailu. Představte si posuvník přiblížení na mapě. Nicméně pokud používáte <\/SPAN>DynamicMapServiceLayer <\/SPAN>pak to začne být komplikované. Nyní můžete přiblížit dvakrát tolik nebo oddálit dvakrát tolik, ale musíte specifikovat faktor v desetinném tvaru, takže si to představte jako procenta. Hádat se dá, že chcete přiblížit dvakrát tolik, takže 0.5 se zdá být bezpečná volba, ale kdybyste zadali 0.25, znamenalo by to co? Přiblížení čtyřikrát více.<\/SPAN><\/P><\/P>Udělějte práci<\/STRONG><\/SPAN><\/P>Dobře, s tímto na paměti už víte, co dělat. Sestavil jsem tento malý modul před nějakou dobou, když mě unavovalo psát stále to samé a kontrolovat typy geometrie a různé scénáře. Vsadím se, že to zvládne 90 % situací, na které narazíte (nemám žádná tvrdá čísla na podporu tohoto tvrzení, ale věřte mi<\/EM>).<\/SPAN><\/P>define([ 'dojox\/lang\/functional\/curry'], function(curry) { // funkce zoom var zoom = curry(function(map, geometry) { if (geometry.type === 'point') { // získat maximální zoom var mz = map.getMaxZoom(); if (mz >-1) { // přiblížit o dvě úrovně méně než max map.centerAndZoom(geometry, mz - 2); } else { // jinak přiblížit čtvrtinově map.centerAndZoom(geometry, 0.25); } } else { // nastavit rozsah geometrie map.setExtent(geometry.getExtent()); } }); return zoom;});<\/PRE><\/P>Zde je živá ukázka<\ /A>.<\ /SPAN>
Bam hotovo!<\/STRONG><\/SPAN><\/P>Woah woah<\/EM>. Co je to za
Není to tvrdý požadavek, ale trochu to okoření věci.<\/SPAN><\/P><\/P>Hrajte si s tím, upravujte to, zneužívejte to a programujte.<\/SPAN><\/P><\/BODY><\/HTML>
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.