关于LODs的理解
由于个人是对ArcGIS做二次开发的,对于ArcGIS的专业地理知识不是很了解,在二次开发中遇到的一些英文专属名词很难理解其中代表的含义,比如LODs关键字是翻译瓷砖好还是瓦片好?在我理解看来已经不重要了,这篇文章中我用ArcGIS API For Flex的开发代码作为演示,查看到底LODs到底是个什么东西?
如下flex中.mxml程序代码
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:esri="http://www.esri.com/2008/ags" backgroundColor="0xEEEEEE" pageTitle="Specifying specific tile levels(指定tile的级别)">
<esri:Map> <esri:lods> <esri:LOD resolution="0.0439453125" scale="18468599.9106772"/> <esri:LOD resolution="0.02197265625" scale="9234299.95533859"/> <esri:LOD resolution="0.010986328125" scale="4617149.97766929"/> <esri:LOD resolution="0.0054931640625" scale="2308574.98883465"/> <esri:LOD resolution="0.00274658203125" scale="1154287.49441732"/> </esri:lods> <esri:extent> <esri:Extent xmin="-124.629" ymin="18.826" xmax="-68.027" ymax="56.311"> <esri:SpatialReference wkid="4269"/> </esri:Extent> </esri:extent> <esri:ArcGISDynamicMapServiceLayer url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer"/> </esri:Map> </s:Application> |
上面的代码也可参考官方API示例查看效果:https://developers.arcgis.com/flex/sample-code/only-use-some-scales-lods.htm
代码演示效果如上图,
这个时候我们观察到左上角的缩放滑块条上的级别正好是5个级别,和我们在flex程序中的<esri:LOD … /> 个数是一样的,也就是说我们可以自定义滑块的缩放级别,参数中resolution属性可以设置当前级别的分辨率和scale属性设置比例尺
如果我们不设置<esri:LOD … />效果会是什么样呢?
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:esri="http://www.esri.com/2008/ags" backgroundColor="0xEEEEEE" pageTitle="Specifying specific tile levels(指定tile的级别)">
<esri:Map> <esri:extent> <esri:Extent xmin="-124.629" ymin="18.826" xmax="-68.027" ymax="56.311"> <esri:SpatialReference wkid="4269"/> </esri:Extent> </esri:extent> <esri:ArcGISDynamicMapServiceLayer url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer"/> </esri:Map> </s:Application> |
我们观察到缩放中没有级别,我们可以点击“+”,“ –”无限大和最小
我们打开<esri:ArcGISDynamicMapServiceLayer/>标签上的url地址发现,原来返回的内容中不包含有关地图Level的信息。http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer
所以我理解为不使用包含level的内容需要设置LOD的内容,还有一个发现是,一旦我们与如下代码中同时使用
<esri:ArcGISTiledMapServiceLayer />我们可以设置LOD也可以不用设置LOD内容,如果不设置将会默认使用ArcGISTiledMapServiceLayer的级别,因为它是包含Level的信息的
<esri:Map extent="{initialExtent}"> <esri:lods> <esri:LOD level="0" resolution="156543.033928" scale="591657527.591555"/> <esri:LOD level="1" resolution="78271.5169639999" scale="295828763.795777"/> <esri:LOD level="2" resolution="39135.7584820001" scale="147914381.897889"/> <esri:LOD level="3" resolution="19567.8792409999" scale="73957190.948944"/> <esri:LOD level="4" resolution="9783.93962049996" scale="36978595.474472"/> <esri:LOD level="5" resolution="4891.96981024998" scale="18489297.737236"/> <esri:LOD level="6" resolution="2445.98490512499" scale="9244648.868618"/> <esri:LOD level="7" resolution="1222.99245256249" scale="4622324.434309"/> <esri:LOD level="8" resolution="611.49622628138" scale="2311162.217155"/> </esri:lods> <esri:ArcGISDynamicMapServiceLayer url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer" alpha="0.5"/> <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer"/> </esri:Map> |
有不对的地方还望指出 谢谢!