{"id":443,"date":"2009-04-13T03:49:00","date_gmt":"2009-04-12T11:49:00","guid":{"rendered":"http:\/\/blog.newnaw.com\/?p=443"},"modified":"2009-04-13T03:49:00","modified_gmt":"2009-04-12T11:49:00","slug":"arcgis-api-for-silverlight%e5%bc%80%e5%8f%91%e5%85%a5%e9%97%a8%ef%bc%882%ef%bc%89%ef%bc%9a%e4%b8%80%e4%b8%aa%e5%9f%ba%e7%a1%80%e5%9c%b0%e5%9b%be%e5%ae%9e%e4%be%8b","status":"publish","type":"post","link":"https:\/\/blog.newnaw.com\/?p=443","title":{"rendered":"ArcGIS API for Silverlight\u5f00\u53d1\u5165\u95e8\uff082\uff09\uff1a\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\u5b9e\u4f8b"},"content":{"rendered":"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u8282\u5728\u4e00\u4e2a\u5730\u56fe\u5b9e\u4f8b\u7684\u57fa\u7840\u4e0a\uff0c\u6765\u5bf9Silverlight API\u4e2d\u7684\u4e00\u4e9b\u57fa\u672c\u6982\u5ff5\u505a\u4e00\u4e2a\u603b\u4f53\u4e86\u89e3\uff0c\u987a\u4fbf\u719f\u6089\u4e00\u4e0bSilverlight\u7684\u5f00\u53d1\u77e5\u8bc6\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"http:\/\/www.newnaw.com\/pub\/sl\/02.html\" target=\"_blank\">\u70b9\u51fb\u8fd9\u91cc<\/a>\uff0c\u76f4\u63a5\u770b\u6548\u679c\u3002<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/3.bp.blogspot.com\/_DD8LUY9p6iU\/SeIlmssEkLI\/AAAAAAAAAGk\/B3U8Dkc9oqM\/s1600-h\/extendedmap.png\" target=\"_blank\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;\" src=\"http:\/\/3.bp.blogspot.com\/_DD8LUY9p6iU\/SeIlmssEkLI\/AAAAAAAAAGk\/B3U8Dkc9oqM\/s400\/extendedmap.png\" alt=\"\" id=\"BLOGGER_PHOTO_ID_5323859056266612914\" border=\"0\" \/><\/a><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6839\u636e\u4e0a\u4e00\u8282\u7684\u77e5\u8bc6\uff0c\u53ef\u4ee5\u77e5\u9053\u8fd9\u4e2aSilverlight\u7a0b\u5e8f\u91cc\u5305\u542b\u4e86\u4e00\u4e2aMap\u63a7\u4ef6\uff0c\u5e76\u4e14\u91cc\u9762\u81f3\u5c11\u6709\u4e00\u4e2aWorldImagery\u7684\u56fe\u5c42\u3002\u90a3\u4e48Page.xaml\u91cc\u7684\u5173\u952e\u4ee3\u7801\u5f00\u8d77\u6765\u5e94\u8be5\u662f\u8fd9\u6837\u7684\uff1a<br \/><code>&lt;Grid x:Name=\"LayoutRoot\"&gt;<br \/>        &lt;esri:Map x:Name=\"Map1\"&gt;<br \/>            &lt;esri:Map.Layers&gt;<br \/>                &lt;esri:ArcGISTiledMapServiceLayer ID=\"WorldImageLayer\" x:Name=\"WorldImageLayer\" Initialized=\"WorldImageLayer_Initialized\"<br \/>                     Url=\"http:\/\/services.arcgisonline.com\/ArcGIS\/rest\/services\/ESRI_Imagery_World_2D\/MapServer\" \/&gt;<br \/>            &lt;\/esri:Map.Layers&gt;<br \/>        &lt;\/esri:Map&gt;<br \/>&lt;\/Grid&gt;<\/code><br \/>\u6240\u6709\u7684\u5e03\u5c40\u5de5\u4f5c\u90fd\u5728\u4e00\u4e2aGrid\u4e2d\u8fdb\u884c\uff0c\u7ed9\u5b83\u8d77\u4e2a\u540d\u5b57\u53ebLayoutRoot\u3002Grid\u91cc\u9762\u653e\u4e86\u4e00\u4e2aesri:Map\u5143\u7d20\uff08Map\u63a7\u4ef6\uff09\uff0c\u5b83\u7ee7\u627f\u81eaSilverlight\u7684Control\uff0c\u6240\u4ee5\u62e5\u6709Width\u548cHeight\u5c5e\u6027\uff0c\u9ed8\u8ba4\u662fAuto\uff0c\u81ea\u52a8\u586b\u5145\u6574\u4e2aGrid\u3002Map.Layers\u662f\u4e00\u4e2a\u96c6\u5408\uff0c\u53ef\u4ee5\u5f80\u91cc\u9762\u6dfb\u52a0layer\uff0c\u8fd9\u91cc\u7684layer\u6307\u7684\u662fArcGIS Server\u6216\u5176\u4ed6\u8f6f\u4ef6\u53d1\u5e03\u7684\u5730\u56fe\u670d\u52a1\uff0c\u76ee\u524dSilverlight API\u4e2d\u652f\u6301\u7684\u80fd\u591f\u76f4\u63a5\u4f7f\u7528\u7684\u6709ArcGISDynamicMapServiceLayer\uff0cArcGISTiledMapServiceLayer\uff0cArcGISImageServiceLayer\uff0c\u5206\u522b\u5bf9\u5e94ArcGIS Server\u53d1\u5e03\u7684\u52a8\u6001\u5730\u56fe\u670d\u52a1\uff0c\u7f13\u5b58\u5730\u56fe\u670d\u52a1\uff08\u4e24\u79cdMap Service\uff09\u548cImage Service\uff0c\u8fd9\u4e09\u79cd\u56fe\u5c42\u662f\u62ff\u6765\u5373\u7528\u7684\uff0c\u5982\u679c\u4f60\u60f3\u52a0\u5165\u522b\u7684\u5730\u56fe\u670d\u52a1\uff0c\u6bd4\u5982WMS\u670d\u52a1\uff0c\u5219\u9700\u8981\u81ea\u5df1\u7ee7\u627f\u76f8\u5e94\u7c7b\u578b\u7684\u7684Layer\uff1b\u6b64\u5916\u8fd8\u6709GraphicsLayer\uff0cElementLayer\uff0cSilverlight API\u7279\u6709\u7684FeatureLayer\u7b49\u3002\u8fd9\u4e9b\u90fd\u4f1a\u5728\u4e4b\u540e\u7684\u5c0f\u8282\u4e2d\u8bb2\u5230\u3002\u5f3a\u8c03\u4e00\u4e0b\uff0c\u4e0eADF\u5f00\u53d1\u91ccMapResourceManager\u4e00\u6837\uff0c\u5728Map\u4e2d\u52a0\u5165\u7684\u5185\u5bb9\u5b9e\u9645\u4e0a\u662f\u5730\u56fe\u670d\u52a1\uff0c\u4f46\u5f53\u505a\u4e00\u4e2alayer\u5904\u7406\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u5c31\u5bf9\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u7684\u6bcf\u4e00\u90e8\u5206\u6765\u505a\u8bf4\u660e\uff08\u4e0e\u4e0a\u56fe\u4e2d\u7684\u5e8f\u53f7\u76f8\u5bf9\u5e94\uff09\u3002<\/p>\n<p>1\u3001\u5f53\u5730\u56fe\u79fb\u52a8\u65f6\u83b7\u53d6\u5730\u56fe\u8303\u56f4\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u5730\u56fe\u8303\u56f4\u6539\u53d8\u540e\uff0c\u663e\u793a\u51fa\u5f53\u524d\u5730\u56fe\u8303\u56f4\u7684\u8fb9\u754c\u503c\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u90e8\u5206\u7684\u9875\u9762\u5e03\u5c40\u662f\u8fd9\u6837\u7684\uff1a<br \/><code>&lt;Grid x:Name=\"Gridright\" Margin=\"0,15,20,0\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Stretch\"&gt;<br \/>            &lt;!--extent--&gt;<br \/>            &lt;Canvas Width=\"215\" Height=\"110\" VerticalAlignment=\"Top\"&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectBottom}\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectMiddle}\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectTop}\" \/&gt;<br \/>                &lt;TextBlock x:Name=\"TBextent\" Margin=\"20,15,15,0\" Text=\"\u8303\u56f4\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>            &lt;\/Canvas&gt;<br \/>&lt;\/Grid&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6709\u5173xaml\u4e2d\u8be6\u7ec6\u7684\u5e03\u5c40\u77e5\u8bc6\u8bf7\u5927\u5bb6\u53c2\u7167\u5176\u4ed6\u4f8b\u5b50\u5b66\u4e60\uff0c\u8fd9\u91cc\u7a0d\u4f5c\u8bb2\u89e3\u3002\u5916\u9762\u7684Gridright\u8fd9\u4e2aGrid\u5c31\u662f\u9875\u9762\u53f3\u8fb91\u30012\u30013\u30016\u7684\u7236\u5bb9\u5668\uff0c\u4e4b\u6240\u4ee5\u4e0d\u7528StackPanel\u662f\u56e0\u4e3a6\u9700\u8981\u8d34\u7740\u9875\u9762\u5e95\u90e8\uff0cStackPanel\u4e2d\u7684\u5143\u7d20\u90fd\u4f1aflow\u8d34\u5230\u4e00\u8d77\u3002\u4e09\u4e2a\u77e9\u5f62\u7ec4\u5408\u4fbf\u6784\u6210\u4e86\u6574\u4f53\u8f6e\u5ed3\uff0c\u7531\u4e8e\u5b83\u4eec\u90fd\u5728\u4e00\u4e2aCanvas\u4e2d\uff0c\u6240\u4ee5\u4f1a\u4ea7\u751f\u538b\u76d6\u6548\u679c\u3002\u6700\u5148\u52a0\u5165\u7684rectBottom\u8fd9\u4e2a\u77e9\u5f62\u4fbf\u662f\u6700\u5e95\u4e0b\u7684\u9634\u5f71\u6548\u679c\uff0c\u4e2d\u95f4\u7684\u77e9\u5f62\u662f\u84dd\u8272\u6846\uff0c\u6700\u4e0a\u9762\u7684\u77e9\u5f62\u662f\u767d\u8272\u7684\u6587\u5b57\u663e\u793a\u533a\u57df\u3002\u201c{ }\u201d\u91cc\u7684\u5185\u5bb9\u5728xaml\u4e2d\u79f0\u4f5cmarkup extention\uff0cStaticResource\u662f\u4f7f\u7528\u5728\u522b\u5904\u5df2\u7ecf\u5b9a\u4e49\u597d\u7684\u8d44\u6e90\uff08resource\uff09\u6765\u5bf9\u672c\u5143\u7d20\u7684\u4e00\u4e9b\u5c5e\u6027\u8fdb\u884c\u81ea\u52a8\u8d4b\u503c\uff0c\u8fd9\u91cc\u7528\u6765\u4fee\u9970Rectangle\u7684\u5916\u89c2\u3002xaml\u4e2d\u9664\u4e86StaticResource\u8fd9\u79cdmarkup extention\u4e4b\u5916\u8fd8\u6709Binding\u548cTemplateBinding\u4e24\u79cdmarkup extention\uff0c\u5206\u522b\u7528\u4e8e\u6570\u636e\u7ed1\u5b9a\uff08data binding\uff09\u548c\u81ea\u5b9a\u4e49control\u7684\u5916\u89c2\u3002\u4e0a\u9762\u7684StaticResource\u662f\u5728App.xaml\u4e2d\u5b9a\u4e49\u7684\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u5728\u672c\u5de5\u7a0b\u7684\u4efb\u4f55\u9875\u9762\u4e2d\u4f7f\u7528\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u5b9a\u4e49\u4e3aLayoutRoot\u8fd9\u4e2aGrid\u7684Resource\u3002\u8d34\u51fa\u6765\u5927\u5bb6\u4e00\u770b\u5c31\u660e\u767d\u4e86\uff1a<br \/><code>&lt;Application.Resources&gt;<br \/>        &lt;Style x:Key=\"rectBottom\" TargetType=\"Rectangle\"&gt;<br \/>            &lt;Setter Property=\"RadiusX\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"RadiusY\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"Fill\" Value=\"#22000000\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Left\" Value=\"5\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Top\" Value=\"5\" \/&gt;<br \/>            &lt;Setter Property=\"Width\" Value=\"215\" \/&gt;<br \/>            &lt;Setter Property=\"Height\" Value=\"110\" \/&gt;<br \/>        &lt;\/Style&gt;<br \/>        &lt;Style x:Key=\"rectMiddle\" TargetType=\"Rectangle\"&gt;<br \/>            &lt;Setter Property=\"RadiusX\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"RadiusY\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"Fill\" Value=\"#775C90B2\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Left\" Value=\"0\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Top\" Value=\"0\" \/&gt;<br \/>            &lt;Setter Property=\"Width\" Value=\"215\" \/&gt;<br \/>            &lt;Setter Property=\"Height\" Value=\"110\" \/&gt;<br \/>            &lt;Setter Property=\"Stroke\" Value=\"Gray\" \/&gt;<br \/>        &lt;\/Style&gt;<br \/>        &lt;Style x:Key=\"rectTop\" TargetType=\"Rectangle\"&gt;<br \/>            &lt;Setter Property=\"RadiusX\" Value=\"5\" \/&gt;<br \/>            &lt;Setter Property=\"RadiusY\" Value=\"5\" \/&gt;<br \/>            &lt;Setter Property=\"Fill\" Value=\"#FFFFFFFF\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Left\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"Canvas.Top\" Value=\"10\" \/&gt;<br \/>            &lt;Setter Property=\"Width\" Value=\"195\" \/&gt;<br \/>            &lt;Setter Property=\"Height\" Value=\"90\" \/&gt;<br \/>            &lt;Setter Property=\"Stroke\" Value=\"DarkGreen\" \/&gt;<br \/>        &lt;\/Style&gt;<br \/>    &lt;\/Application.Resources&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5b83\u4eec\u5c31\u76f8\u5f53\u4e8e\u7f51\u9875\u4e2d\u7684css\u3002\u5982\u679c\u4e0d\u4f7f\u7528StaticResource\uff0c\u90a3\u4e48\u4e09\u4e2a\u77e9\u5f62\u770b\u8d77\u6765\u5e94\u8be5\u662f\u8fd9\u6837\u7684\uff1a<br \/><code>&lt;Rectangle RadiusX=\"10\" RadiusY=\"10\" Fill=\"#22000000\" Canvas.Left=\"5\" Canvas.Top=\"5\" Width=\"215\" Height=\"110\" \/&gt;<br \/>        &lt;Rectangle RadiusX=\"10\" RadiusY=\"10\" Fill=\"#775C90B2\" Canvas.Left=\"0\" Canvas.Top=\"0\" Width=\"215\" Height=\"110\" Stroke=\"Gray\" \/&gt;<br \/>        &lt;Rectangle RadiusX=\"5\" RadiusY=\"5\" Fill=\"#FFFFFFFF\" Canvas.Left=\"10\" Canvas.Top=\"10\" Width=\"195\" Height=\"90\" Stroke=\"DarkGreen\" \/&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4f60\u731c\u7684\u6ca1\u9519\uff0c\u5728\u5176\u4ed6\u77e9\u5f62\u6846\u90e8\u5206\u4e5f\u4f7f\u7528\u5230\u4e86\u8fd9\u4e9b\u5c5e\u6027\u3002\u901a\u8fc7\u5b9e\u8df5\u53ef\u4ee5\u611f\u53d7\u5230\uff0cxaml\u4e2d\u7684\u5e03\u5c40\u5728\u4e00\u822c\u4f7f\u7528\u4e2d\u6bd4html+css\u7684\u5e03\u5c40\u8981\u7b80\u5355\u548c\u7075\u6d3b\u8bb8\u591a\u3002\u597d\u4e86\uff0c\u7ee7\u7eed\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map\u63a7\u4ef6\u91cc\u9762\u5df2\u7ecf\u5c01\u88c5\u4e86\u4e00\u4e9b\u4e8b\u4ef6\u6765\u4f9b\u6211\u4eec\u4f7f\u7528\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u9700\u8981\u7684\u65f6\u5019\u6355\u83b7\u5b83\u4eec\u6765\u8fdb\u884c\u5904\u7406\u3002\u5982\u679c\u505a\u8fc7ArcGIS\u4ea7\u54c1\u7684\u4e8c\u6b21\u5f00\u53d1\uff0c\u4f60\u5e94\u8be5\u5df2\u7ecf\u60f3\u5230\u6211\u4eec\u8981\u6355\u83b7\u7684\u5c31\u662fMap\u7684ExtentChanged\u4e8b\u4ef6\uff1b\u800c\u8981\u5728\u5730\u56fe\u79fb\u52a8\u6216\u8005\u7f29\u653e\u7684\u8fc7\u7a0b\u4e2d\u4e5f\u5b9e\u65f6\u663e\u793a\u5730\u56fe\u8303\u56f4\uff0c\u5219\u8fd8\u8981\u5bf9ExtentChanging\u4e8b\u4ef6\u505a\u5904\u7406\u3002\u7ec6\u5fc3\u7684\u4f60\u53ef\u80fd\u5df2\u7ecf\u53d1\u73b0\uff0c\u5728\u4e0a\u9762\u7684xaml\u4ee3\u7801\u4e2d\u5df2\u7ecf\u5bf9\u4e16\u754c\u5730\u56fe\u8fd9\u4e2a\u56fe\u5c42\u7684Initialized\u4e8b\u4ef6\u6dfb\u52a0\u4e86\u4e00\u4e2ahanlder\uff1aWorldImageLayer_Initialized\u3002\u5f53\u7136\u53ef\u4ee5\u50cf\u8fd9\u6837\u4e00\u6837\u7ed9Map\u7684\u8fd9\u4e24\u4e2a\u4e8b\u4ef6\u6dfb\u52a0handler\uff0c\u4f46\u8fd9\u91cc\u5e76\u4e0d\u8fd9\u4e48\u505a\uff0c\u800c\u662f\u5728\u4e16\u754c\u5730\u56fe\u56fe\u5c42\u7684Initialized\u4e8b\u4ef6\u91cc\u6765\u7ed1\u5b9a\u5b83\u4eec\uff08\u79fb\u52a8\u5730\u56fe\u65f6\u51fa\u53d1ExtentChanged\u4e8b\u4ef6\uff0c\u7f51\u901f\u8fc7\u6162\u5bfc\u81f4\u56fe\u5c42\u5e76\u672a\u52a0\u5165\u5230Map\u4e2d\uff0c\u5219\u4f1a\u62a5\u9519\uff09\u3002\u6765\u770b\u770bPage.xaml.cs\u4e2d\u7684code-behind\u4ee3\u7801\uff1a<br \/><code>private void WorldImageLayer_Initialized(object sender, EventArgs e)<br \/>        {<br \/>            Map1.ExtentChanged += new EventHandler&lt;ESRI.ArcGIS.ExtentEventArgs&gt;(Map1_ExtentChange);<br \/>            Map1.ExtentChanging += new EventHandler&lt;ESRI.ArcGIS.ExtentEventArgs&gt;(Map1_ExtentChange);<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6ca1\u9519\uff0c\u628a\u4e24\u4e2a\u4e8b\u4ef6\u7ed1\u5b9a\u5230\u540c\u4e00\u4e2ahandler\u5373\u53ef\u3002\u518d\u770b\u770bMap1_ExtentChange\u4e2d\u7684\u4ee3\u7801\uff1a<br \/><code>private void Map1_ExtentChange(object sender, ESRI.ArcGIS.ExtentEventArgs e)<br \/>        {<br \/>            TBextent.Text = string.Format(\"\u5730\u56fe\u8303\u56f4\uff1a<br \/>\nMinX:{0}<br \/>\nMinY:{1}<br \/>\nMaxX:{2}<br \/>\nMaxY:{3}\",<br \/>                e.NewExtent.XMin, e.NewExtent.YMin, e.NewExtent.XMax, e.NewExtent.YMax);<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f88\u7b80\u5355\u5427\uff1f\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0cExtentEventArgs\u91cc\u65e2\u7136\u6709NewExtent\uff0c\u5f53\u7136\u5c31\u6709OldExtent\u4e86\uff0c\u901a\u8fc7\u6bd4\u8f83\u8fd9\u4e24\u4e2a\u53d8\u91cf\u5c31\u53ef\u4ee5\u5206\u6790\u51fa\u5f53\u524d\u8fdb\u884c\u7684\u662f\u653e\u5927\u3001\u7f29\u5c0f\u8fd8\u662f\u5e73\u79fb\u64cd\u4f5c\u4e86\u3002\u5176\u5b9e\u8fd8\u6709\u4e2a\u66f4\u7b80\u5355\u7684\u529e\u6cd5\uff0c\u67e5\u67e5\u770bMap\u7684Resolution\u5c5e\u6027\u5427\u3002<br \/>\u5bf9\u4e8eSilverlight API\u4e2d\u5185\u5bb9\uff0c\u662f\u4e0d\u662f\u611f\u89c9\u5f88\u5bb9\u6613\u5462\uff08\u5f53\u7136\u4f60\u5f97\u505a\u591fxaml\u7684\u529f\u8bfe\u624d\u884c\uff09\uff1f\u90a3\u4e48\u8d76\u5feb\u6765\u770b\u7b2c\u4e8c\u90e8\u5206\u3002<\/p>\n<p>2\u3001\u5f53\u9f20\u6807\u79fb\u52a8\u65f6\u83b7\u53d6\u9f20\u6807\u5750\u6807\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5305\u62ec\u5c4f\u5e55\u5750\u6807\u548c\u5730\u56fe\u5750\u6807\u3002\u5916\u89c2\u6837\u5f0f\u65b9\u9762\u662f\u8fd9\u6837\u7684\uff1a<br \/><code> &lt;!--mouse coords--&gt;<br \/>            &lt;Canvas Width=\"215\" Height=\"110\" Margin=\"0,120,0,0\" VerticalAlignment=\"Top\"&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectBottom}\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectMiddle}\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectTop}\" \/&gt;<br \/>                &lt;StackPanel Orientation=\"Vertical\" Margin=\"20,15,15,0\"&gt;<br \/>                    &lt;TextBlock x:Name=\"TBscreencoords\" <br \/>                    HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Text=\"\u5c4f\u5e55\u5750\u6807\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;TextBlock x:Name=\"TBmapcoords\" <br \/>                    HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Text=\"\u5730\u56fe\u5750\u6807\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                &lt;\/StackPanel&gt;<br \/>            &lt;\/Canvas&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u90a3\u4e48\u63a5\u4e0b\u6765\u8981\u6355\u6349\u90a3\u4e2a\u4e8b\u4ef6\u5462\uff1f\u5f53\u7136\u5c31\u662fMouseMove\u5566\u3002\u4e0d\u8fc7\u5982\u679c\u67e5\u770bSilverlight API\u4e2d\u7684Map\u7c7b\uff0c\u53d1\u73b0\u5e76\u6ca1\u6709\u8fd9\u4e2a\u4e8b\u4ef6\u3002\u4f46\u8981\u8bb0\u4f4fMap\u662f\u7ee7\u627f\u81eaxaml\u4e2d\u7684Control\uff0cControl\u7ee7\u627f\u81eaFrameworkElement,FrameworkElement\u7ee7\u627f\u81eaUIElement\uff0c\u8fd9\u91cc\u5c31\u6709\u4e00\u4e2aMouseMove\u4e8b\u4ef6\u4e86\u3002\u6240\u4ee5Map\u63a7\u4ef6\u7684MouseMove\u662fxaml\u4e2d\u800c\u4e0d\u662fSiverlight API\u4e2d\u7684\u4e8b\u4ef6\uff08\u5f53\u7136\u6574\u4e2aSilverlight API\u90fd\u662f\u5efa\u7acb\u5728xaml\u57fa\u7840\u4e0a\u7684\uff09\u3002\u5728esri:Map\u6807\u7b7e\u4e2d\u6dfb\u52a0\u4e00\u4e2aMouseMove\u4e8b\u4ef6\uff08MouseMove=&#8221;Map1_MouseMove&#8221;\uff09\uff0c\u6765\u770b\u770bcode-behind\u4ee3\u7801\uff1a<br \/><code>private void Map1_MouseMove(object sender, MouseEventArgs e)<br \/>        {<br \/>            if (Map1.Extent != null)<br \/>            {<br \/>                System.Windows.Point screenPnt = e.GetPosition(Map1);<br \/>                TBscreencoords.Text = string.Format(\"\u5c4f\u5e55\u5750\u6807\uff1a<br \/>\nX\uff1a{0}\uff0cY\uff1a{1}\", screenPnt.X, screenPnt.Y);<\/p>\n<p>                ESRI.ArcGIS.Geometry.MapPoint mapPnt = Map1.ScreenToMap(screenPnt);<br \/>                TBmapcoords.Text = string.Format(\"\u5730\u56fe\u5750\u6807\uff1a<br \/>\nX\uff1a{0}<br \/>\nY\uff1a{1}\", Math.Round(mapPnt.X, 4), Math.Round(mapPnt.Y, 4));<br \/>            }<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u53ef\u4ee5\u770b\u5230Map\u63a7\u4ef6\u63d0\u4f9b\u4e86\u5c4f\u5e55\u4e0e\u5730\u56fe\u5750\u6807\u4e4b\u95f4\u8f6c\u6362\u7684\u65b9\u6cd5\uff0c\u597d\u6bd4\u5f00\u53d1\u4eba\u5458\u7684\u4e00\u5ea7\u6865\u6881\uff0c\u7528\u6765\u5f80\u8fd4\u4e8eSilverlight\u7279\u6027\u4e0e\u5730\u56fe\u4e4b\u95f4\uff0c\u975e\u5e38\u65b9\u4fbf\u3002\u9700\u8981\u8bf4\u660e\u7684\u662f\uff0c\u8fd9\u91ccGetPosition(Map1)\u83b7\u5f97\u7684\u5c4f\u5e55\u5750\u6807\u662f\u76f8\u5bf9\u4e8eMap\u63a7\u4ef6\u7684\uff0c\u800c\u4e0d\u662f\u663e\u793a\u5668\u7684\u5de6\u4e0a\u89d2\u3002ok\uff0c\u7ee7\u7eed\u6765\u770b\u7b2c\u4e09\u90e8\u5206\u3002<\/p>\n<p>3\u3001Map\u91cc\u7684\u52a8\u753b\u6548\u679c\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u5730\u56fe\u653e\u5927\u548c\u5e73\u79fb\u65f6\u90fd\u53ef\u4ee5\u770b\u5230\u5e73\u6ed1\u7684\u6548\u679c\uff0c\u8fd9\u5f52\u529f\u4e8eSilverlight\u7684\u52a8\u753b\u529f\u80fd\u3002Map\u5728\u5c01\u88c5\u5b8c\u52a8\u753b\u6548\u679c\u540e\uff0c\u7ed9\u4e86\u6211\u4eec\u4e24\u4e2a\u5c5e\u6027\u6765\u5bf9\u5b83\u4eec\u8fdb\u884c\u8bbe\u7f6e\uff1aPanDuration\u548cZoomDuration\uff0c\u7528\u4e8e\u8bbe\u7f6e\u8fd9\u4e24\u4e2a\u52a8\u4f5c\u6301\u7eed\u7684\u65f6\u95f4\u3002\u5b83\u4eec\u90fd\u662fTimeSpan\u7c7b\u578b\u7684\u53d8\u91cf\uff0c\u5408\u7406\u7684\u8bbe\u7f6e\u53ef\u4ee5\u5e26\u6765\u826f\u597d\u7684\u7528\u6237\u4f53\u9a8c\u3002\u770b\u770b\u8fd9\u90e8\u5206\u7684\u5e03\u5c40\uff1a<br \/><code>&lt;!--map animation slider--&gt;<br \/>            &lt;Canvas Width=\"215\" Height=\"130\" Margin=\"0,240,0,0\" VerticalAlignment=\"Top\"&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectBottom}\" Height=\"130\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectMiddle}\" Height=\"130\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectTop}\" Height=\"110\" \/&gt;<br \/>                &lt;StackPanel Orientation=\"Vertical\" Margin=\"20,15,15,0\"&gt;<br \/>                    &lt;TextBlock HorizontalAlignment=\"Left\" Text=\"\u8bbe\u7f6e\u5730\u56fe\u7f29\u653e\u52a8\u4f5c\u6301\u7eed\u65f6\u95f4\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;TextBlock x:Name=\"TBzoomdurationvalue\"  HorizontalAlignment=\"Left\" Text=\"\u5f53\u524d\u503c\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;Slider x:Name=\"sliderzoomanimation\" Orientation=\"Horizontal\" Minimum=\"0\" Maximum=\"20\" SmallChange=\"1\"<br \/>                            LargeChange=\"5\" Cursor=\"Hand\" ValueChanged=\"slideranimation_ValueChanged\" Width=\"180\" \/&gt;<br \/>                    &lt;TextBlock HorizontalAlignment=\"Left\" Text=\"\u8bbe\u7f6e\u5730\u56fe\u5e73\u79fb\u52a8\u4f5c\u6301\u7eed\u65f6\u95f4\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;TextBlock x:Name=\"TBpandurationvalue\"  HorizontalAlignment=\"Left\" Text=\"\u5f53\u524d\u503c\uff1a\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;Slider x:Name=\"sliderpananimation\" Orientation=\"Horizontal\" Minimum=\"0\" Maximum=\"20\" SmallChange=\"1\"<br \/>                            LargeChange=\"5\" Cursor=\"Hand\" ValueChanged=\"slideranimation_ValueChanged\" Width=\"180\" \/&gt;<br \/>                &lt;\/StackPanel&gt;<br \/>            &lt;\/Canvas&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e3b\u8981\u7528\u5230\u4e86\u4e24\u4e2aslider\u63a7\u4ef6\u3002\u518d\u770b\u770b\u62d6\u52a8\u6ed1\u5757\u65f6\u7684\u4e8b\u4ef6\u4ee3\u7801\uff0c\u4e3a\u4e86\u7701\u4e8b\uff0c\u8fd9\u4e24\u4e2a\u4e8b\u4ef6\u4e5f\u7528\u4e86\u540c\u4e00\u4e2ahandler\uff1a<br \/><code>private void slideranimation_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)<br \/>        {<br \/>            Slider s=sender as Slider;<br \/>            if (s.Name == \"sliderzoomanimation\")<br \/>            {<br \/>                Map1.ZoomDuration = new TimeSpan(0, 0, Convert.ToInt32(sliderzoomanimation.Value));<br \/>                TBzoomdurationvalue.Text = string.Format(\"\u5f53\u524d\u503c\uff1a{0}\u79d2\", Convert.ToInt32(sliderzoomanimation.Value));<br \/>            } <br \/>            else<br \/>            {<br \/>                Map1.PanDuration = new TimeSpan(0, 0, Convert.ToInt32(sliderpananimation.Value));<br \/>                TBpandurationvalue.Text = string.Format(\"\u5f53\u524d\u503c\uff1a{0}\u79d2\", Convert.ToInt32(sliderpananimation.Value));<br \/>            } <br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5bf9\u5e94\u7740\u5730\u56fe\u6548\u679c\uff0c\u5e94\u8be5\u5f88\u5bb9\u6613\u7406\u89e3\u3002\u7ee7\u7eed\u7b2c\u56db\u90e8\u5206\u3002<\/p>\n<p>4\u3001\u5bf9\u5730\u56fe\u670d\u52a1\u53ef\u89c1\u6027\u4e0e\u52a8\u6001\u5730\u56fe\u670d\u52a1\u4e2d\u56fe\u5c42\u53ef\u89c1\u6027\u7684\u63a7\u5236\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd8\u662f\u8981\u5f3a\u8c03\u4e00\u4e0b\uff0cWorldImagery\u548cStreetMap\u4e24\u4e2a\u80fd\u770b\u5230\u7684\u5730\u56fe\u5b9e\u9645\u4e0a\u90fd\u662f\u5730\u56fe\u670d\u52a1\uff0c\u5f53\u4f5clayer\u52a0\u5165\u5230\u4e86Map\u63a7\u4ef6\u4e2d\uff1b\u800c\u52a8\u6001\u5730\u56fe\u670d\u52a1USA\u4e2d\u7684\u56fe\u5c42Cities\uff0cRivers\uff0cStates\u624d\u662f\u4e0eArcMap\u4e2d\u56fe\u5c42\u76f8\u5bf9\u7684\u6982\u5ff5\u3002\u5bf9\u4e8eWorldImagery\u548cStreetMap\u4e4b\u95f4\u7684\u5207\u6362\uff0c\u4e3b\u8981\u7528\u5230\u4e86Silverlight API\u91ccLayer\u7684<br \/>Visible\u5c5e\u6027\uff1b\u800c\u52a8\u6001\u670d\u52a1\u4e2d\u56fe\u5c42\u53ef\u89c1\u6027\u7684\u64cd\u4f5c\uff0c\u4e3b\u8981\u662f\u5bf9ArcGISDynamicMapServiceLayer\u7684VisibleLayers\u6570\u7ec4\u505a\u4e86\u8bbe\u7f6e\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreetMap\u8fd9\u4e2a\u670d\u52a1\u5176\u5b9e\u4e00\u5f00\u59cb\u5c31\u52a0\u5165\u4e86\u5730\u56fe\uff08\u5728esri:Map\u6807\u7b7e\u4e2d\uff09\uff1a<br \/><code>&lt;esri:ArcGISTiledMapServiceLayer ID=\"StreetMapLayer\"<br \/>                     Url=\"http:\/\/services.arcgisonline.com\/ArcGIS\/rest\/services\/ESRI_StreetMap_World_2D\/MapServer\" Visible=\"False\" \/&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u800c\u8bbe\u7f6e\u4e86Visible=&#8221;False&#8221;\u3002\u56fe\u5c42\u4e0d\u53ef\u89c1\u65f6\u5730\u56fe\u4e0d\u4f1a\u5bf9\u5b83\u505a\u4efb\u4f55\u5904\u7406\uff0c\u6240\u4ee5\u4e0d\u7528\u62c5\u5fc3\u4f1a\u8017\u8d39\u6d41\u91cf\u6216\u52a0\u91cd\u7a0b\u5e8f\u8d1f\u62c5\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u770b\u770b\u5e03\u5c40\u90e8\u5206\uff1a<br \/><code>&lt;StackPanel HorizontalAlignment=\"Left\" Margin=\"20,15,0,0\"&gt;<br \/>            &lt;Canvas x:Name=\"Canvasleft\" Width=\"165\" Height=\"90\" HorizontalAlignment=\"Left\"  VerticalAlignment=\"Top\"&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectBottom}\"  Width=\"165\" Height=\"90\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectMiddle}\" Fill=\"#7758FF00\" Width=\"165\" Height=\"90\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectTop}\" Width=\"145\" Height=\"70\" \/&gt;<br \/>                &lt;!--change layer--&gt;<br \/>                &lt;StackPanel Margin=\"20,15,15,0\"&gt;<br \/>                    &lt;TextBlock Text=\"\u5207\u6362\u56fe\u5c42:\" TextWrapping=\"Wrap\" FontWeight=\"Bold\" \/&gt;<br \/>                    &lt;StackPanel Orientation=\"Horizontal\"&gt;<br \/>                        &lt;ToggleButton x:Name=\"TBimagery\" Content=\"Imagery\" Click=\"TBimagery_Clicked\" Cursor=\"Hand\" \/&gt;<br \/>                        &lt;ToggleButton x:Name=\"TBstreetmap\" Content=\"StreetMap\" Click=\"TBstreetmap_Clicked\" Cursor=\"Hand\" \/&gt;<br \/>                    &lt;\/StackPanel&gt;<br \/>                    &lt;CheckBox Margin=\"0,5,0,0\" x:Name=\"chkboxDynamicLayer\" Content=\"\u6dfb\u52a0\u4e00\u4e2a\u52a8\u6001\u56fe\u5c42\u5427\" IsChecked=\"False\" Click=\"chkboxDynamicLayer_Click\" Cursor=\"Hand\" \/&gt;<br \/>                &lt;\/StackPanel&gt;<br \/>            &lt;\/Canvas&gt;<br \/>&lt;\/StackPanel&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u91cc\u4f7f\u7528\u4e86ToggleButton\uff0cCheckBox\u548cRadioButton\u90fd\u7531\u5b83\u6d3e\u751f\u800c\u6765\u3002Silverlight 2\u4e2d\u7684ToggleButton\u4e0d\u80fd\u8bbe\u7f6eGroup\uff08\u4e00\u4e2aGroup\u4e2d\u81ea\u52a8\u9650\u5b9a\u540c\u65f6\u53ea\u80fd\u6709\u4e00\u4e2a\u63a7\u4ef6\u5904\u4e8e\u6fc0\u6d3b\u72b6\u6001\uff09\uff0c\u4e0d\u5982Flex\u91cc\u7684ToggleButton\u6765\u7684\u65b9\u4fbf\uff0c\u6240\u4ee5code-behind\u4e2d\u591a\u505a\u4e86\u4e9b\u5de5\u4f5c\u3002\u5f53\u7136\u8fd9\u91cc\u4f7f\u7528RadioButton\u4e5f\u662f\u53ef\u4ee5\u7684\u3002<br \/><code>private void TBimagery_Clicked(object sender, RoutedEventArgs e)<br \/>        {<br \/>            if (TBstreetmap.IsChecked==true)<br \/>            {<br \/>                Map1.Layers[\"WorldImageLayer\"].Visible = true;<br \/>                Map1.Layers[\"WorldImageLayer\"].Opacity = 0;<br \/>                TBstreetmap.IsChecked = false;<br \/>                Storyboard sbworldmapshow = makestoryboard(\"WorldImageLayer\", 0, 1);<br \/>                Storyboard sbstreetmaphide = makestoryboard(\"StreetMapLayer\", 1, 0);<br \/>                sbworldmapshow.Begin();<br \/>                sbstreetmaphide.Begin();<br \/>                hidelayername = \"StreetMapLayer\";<br \/>                timer.Begin();<br \/>            }<br \/>            TBimagery.IsChecked = true;<br \/>        }<\/p>\n<p>        private void TBstreetmap_Clicked(object sender, RoutedEventArgs e)<br \/>        {<br \/>            if (TBimagery.IsChecked==true)<br \/>            {<br \/>                Map1.Layers[\"StreetMapLayer\"].Visible = true;<br \/>                Map1.Layers[\"StreetMapLayer\"].Opacity = 0;<br \/>                TBimagery.IsChecked = false;<br \/>                Storyboard sbstreetmapshow = makestoryboard(\"StreetMapLayer\", 0, 1);<br \/>                Storyboard sbworldmaphide = makestoryboard(\"WorldImageLayer\", 1, 0);<br \/>                sbstreetmapshow.Begin();<br \/>                sbworldmaphide.Begin();<br \/>                hidelayername = \"WorldImageLayer\";<br \/>                timer.Begin();<br \/>            }<br \/>            TBstreetmap.IsChecked = true;<br \/>        }<\/p>\n<p>        private void timer_Tick(object sender, EventArgs e)<br \/>        {<br \/>            Map1.Layers[hidelayername].Visible = false;<br \/>        }<\/p>\n<p>        public Storyboard makestoryboard(string layername, double from, double to)<br \/>        {<br \/>            Storyboard sb = new Storyboard();<br \/>            ESRI.ArcGIS.ArcGISTiledMapServiceLayer layer = Map1.Layers[layername] as ESRI.ArcGIS.ArcGISTiledMapServiceLayer;<br \/>            DoubleAnimation doubleAnim = new DoubleAnimation();<br \/>            doubleAnim.Duration = new TimeSpan(0, 0, 5);<br \/>            doubleAnim.From = from;<br \/>            doubleAnim.To = to;<br \/>            Storyboard.SetTarget(doubleAnim, layer);<br \/>            Storyboard.SetTargetProperty(doubleAnim, new PropertyPath(\"Opacity\"));<br \/>            sb.Children.Add(doubleAnim);<\/p>\n<p>            return sb;<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u5207\u6362\u4e24\u4e2a\u5730\u56fe\u670d\u52a1\u65f6\u80fd\u591f\u770b\u5230\u4e00\u4e2a\u6e10\u53d8\u7684\u6548\u679c\uff0c\u8fd9\u91cc\u7528\u5230\u4e86Silverlight\u4e2d\u7684\u52a8\u753b\uff0c\u5b83\u4eec\u90fd\u662f\u5728StoryBoard\u91cc\u9762\u8fdb\u884c\u7684\uff0c\u4ee5\u540e\u7684\u5c0f\u8282\u4e2d\u4f1a\u8bb2Silverlight\u4e2d\u7684\u52a8\u753b\uff0c\u8fd9\u91cc\u4e0d\u518d\u5e9f\u8bdd\u4e86\uff0c\u6709\u5174\u8da3\u7684\u670b\u53cb\u53ef\u4ee5\u81ea\u5df1\u53c2\u8003\u5e2e\u52a9\u5b66\u4e60\u3002hidelayername\u662f\u8fd9\u4e2a\u4e00\u4e2a\u516c\u7528\u7684string\u53d8\u91cf\uff0c\u7528\u6765\u5728\u5207\u6362\u7684\u52a8\u753b\u6548\u679c\u5b8c\u6210\u540e\u8bbe\u7f6e\u4e0d\u53ef\u89c1\u7684\u56fe\u5c42Visible\u5c5e\u6027\u3002timer\u4e5f\u662f\u4e00\u4e2aStoryBoard\uff1a<br \/><code>&lt;Storyboard x:Name=\"timer\" Completed=\"timer_Tick\" Duration=\"0:0:5\" \/&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u91cc\u53ef\u4ee5\u770b\u51fa\u628aStoryBoard\u4e5f\u80fd\u5de7\u5999\u7684\u7528\u4f5c\u8ba1\u65f6\u5668\u3002\u5230\u4e86\u7279\u5b9a\u65f6\u95f4\uff085\u79d2\uff09\u540e\u4f1a\u81ea\u52a8timer_Tick\u51fd\u6570\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528.net\u4e2d\u7684\u5404\u79cdtimer\u7c7b\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u662f\u6dfb\u52a0\u52a8\u6001\u670d\u52a1\u7684\u90e8\u5206\u3002<br \/><code>private void chkboxDynamicLayer_Click(object sender, RoutedEventArgs e)<br \/>        {<br \/>                if (chkboxDynamicLayer.IsChecked == true)<br \/>                {<br \/>                    Map1.Layers.Add(california);<br \/>                    Map1.ZoomTo(california.FullExtent);<\/p>\n<p>                    if (california.IsInitialized == false)<br \/>                    {<br \/>                        chkboxDynamicLayer.IsEnabled = false;<br \/>                    }<br \/>                    chkboxDynamicLayer.Content = \"\u53bb\u6389\u5b83\";<br \/>                    SVlayers.Visibility = Visibility.Visible;<br \/>                }<br \/>                else<br \/>                {<br \/>                    Map1.Layers.Remove(california);<br \/>                    chkboxDynamicLayer.Content = \"\u6dfb\u52a0\u4e00\u4e2a\u52a8\u6001\u56fe\u5c42\u5427\";<br \/>                    SVlayers.Visibility = Visibility.Collapsed;<br \/>                }<br \/>        }<\/p>\n<p>        private void dynamiclayer_initialized(object s, EventArgs e)<br \/>        {<br \/>            \/\/\u82e5\u56fe\u5c42\u6ca1\u6709\u521d\u59cb\u5316\u597d\u5c31\u79fb\u9664\u56fe\u5c42\uff0c\u5f53\u7136\u4f1a\u62a5\u9519\u4e86\uff0c\u6240\u4ee5\u8fd9\u6837\u505a\u5c31\u4e0d\u4f1a\u4e86<br \/>            chkboxDynamicLayer.IsEnabled = true;<br \/>            Map1.ZoomTo(california.InitialExtent);<br \/>            SVlayers.Visibility = Visibility.Visible;<br \/>            california.ID = \"layercalifornia\";<\/p>\n<p>            ESRI.ArcGIS.ArcGISDynamicMapServiceLayer dynamicServiceLayer = s as ESRI.ArcGIS.ArcGISDynamicMapServiceLayer;<br \/>            if (dynamicServiceLayer.VisibleLayers == null)<br \/>                dynamicServiceLayer.VisibleLayers = GetDefaultVisibleLayers(dynamicServiceLayer);<br \/>            UpdateLayerList(dynamicServiceLayer);<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u6dfb\u52a0\u4e86\u52a8\u6001\u670d\u52a1\u540e\uff0c\u4f1a\u81ea\u52a8\u5f39\u51fa\u4e00\u4e2alistbox\uff0c\u5f53\u7136\u8fd9\u4e9b\u4e5f\u90fd\u662f\u5728xaml\u4e2d\u5b9a\u4e49\u597d\u7684\uff08\u52a0\u5728\u4e0a\u9762\u7684Canvas\u540e\u9762\uff09\uff1a<br \/><code>&lt;ScrollViewer x:Name=\"SVlayers\" Width=\"165\" Visibility=\"Collapsed\" Height=\"120\"&gt;<br \/>                &lt;ListBox x:Name=\"LayerVisibilityListBox\" &gt;<br \/>                    &lt;ListBox.ItemTemplate&gt;<br \/>                        &lt;DataTemplate&gt;<br \/>                            &lt;CheckBox Margin=\"2\" Name=\"{Binding LayerIndex}\" Content=\"{Binding LayerName}\" <br \/>                                      Tag=\"{Binding ServiceName}\" IsChecked=\"{Binding Visible}\" <br \/>                                      ClickMode=\"Press\" Click=\"chkboxToggleVilible_Click\"   \/&gt;<br \/>                        &lt;\/DataTemplate&gt;<br \/>                    &lt;\/ListBox.ItemTemplate&gt;<br \/>                &lt;\/ListBox&gt;<br \/>            &lt;\/ScrollViewer&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u91cc\u628aListBox\u653e\u5230\u4e86ScrollVierwer\u4e2d\uff0c\u56fa\u5b9a\u4e86\u5b83\u7684\u9ad8\u5ea6\uff0c\u5f53\u5185\u5bb9\u8fc7\u591a\u65f6\u53ef\u4ee5\u81ea\u52a8\u663e\u793a\u7eb5\u5411\u6eda\u52a8\u6761\u3002\u8fd9\u91cc\u8981\u63d0\u4e00\u4e0b\uff0cListBox\u7684\u5185\u5bb9\u7528\u5230\u4e86\u6570\u636e\u7ed1\u5b9a\uff08\u53c2\u8003xaml\u4e2d\u7684Data Binding\uff0c\u6709OneTime,OneWay\u548cTwoWay\u4e09\u79cd\u6a21\u5f0f\uff0c\u8fd9\u91cc\u4f7f\u7528\u7684\u662f\u9ed8\u8ba4\u7684OneTime\uff09\uff0c\u770b\u8d77\u6765\u91cc\u9762\u53ea\u6709\u4e00\u4e2aCheckBox\uff0c\u4f46\u5b83\u76f8\u5f53\u4e8e\u4e00\u4e2a\u6a21\u677f\uff0c\u5728code-behind\u4e2d\u8bbe\u7f6e\u4e86ListBox.ItemSource\u4e4b\u540e\uff0c\u6839\u636e\u8be5\u5c5e\u6027\u7684\u5185\u5bb9\u81ea\u52a8\u751f\u6210\u591a\u4e2aCheckBox\u3002\u4ee3\u7801\u4e2d\u81ea\u5b9a\u4e49\u4e86\u4e00\u4e2aLayerListData\u7c7b\uff0c\u5b83\u7684\u51e0\u4e2a\u5c5e\u6027\u5206\u522b\u4e0e\u4e0a\u9762\u7684CheckBox\u5c5e\u6027\u7ed1\u5b9a\uff1b\u5c06\u4e00\u4e2aList<LayerListData>\u8d4b\u7ed9\u4e86ListBox.ItemSource\uff0c\u5219\u4f1a\u81ea\u52a8\u751f\u6210ListBox\u4e2d\u7684\u5185\u5bb9\u3002\u901a\u8fc7\u4e00\u4e2aList<int>\u7c7b\u578b\u53d8\u91cf\uff0c\u6765\u63a7\u5236\u52a8\u6001\u670d\u52a1\u7684\u53ef\u89c1\u56fe\u5c42\u3002\u4ee3\u7801\u5982\u4e0b\uff1a<br \/><code>public class LayerListData<br \/>        {<br \/>            public bool Visible { get; set; }<br \/>            public string ServiceName { get; set; }<br \/>            public string LayerName { get; set; }<br \/>            public int LayerIndex { get; set; }<br \/>        }<\/p>\n<p>        private int[] GetDefaultVisibleLayers(ESRI.ArcGIS.ArcGISDynamicMapServiceLayer dynamicService)<br \/>        {<br \/>            List&lt;int&gt; visibleLayerIDList = new List&lt;int&gt;();<\/p>\n<p>            ESRI.ArcGIS.LayerInfo[] layerInfoArray = dynamicService.Layers;<\/p>\n<p>            for (int index = 0; index &lt; layerInfoArray.Length; index++)<br \/>            {<br \/>                if (layerInfoArray[index].DefaultVisibility)<br \/>                    visibleLayerIDList.Add(index);<br \/>            }<\/p>\n<p>            return visibleLayerIDList.ToArray();<br \/>        }<\/p>\n<p>        private void UpdateLayerList(ESRI.ArcGIS.ArcGISDynamicMapServiceLayer dynamicServiceLayer)<br \/>        {<br \/>            int[] visibleLayerIDs = dynamicServiceLayer.VisibleLayers;<\/p>\n<p>            if (visibleLayerIDs == null)<br \/>                visibleLayerIDs = GetDefaultVisibleLayers(dynamicServiceLayer);<\/p>\n<p>            List&lt;LayerListData&gt; visibleLayerList = new List&lt;LayerListData&gt;();<\/p>\n<p>            ESRI.ArcGIS.LayerInfo[] layerInfoArray = dynamicServiceLayer.Layers;<\/p>\n<p>            for (int index = 0; index &lt; layerInfoArray.Length; index++)<br \/>            {<br \/>                visibleLayerList.Add(new LayerListData()<br \/>                {<br \/>                    Visible = visibleLayerIDs.Contains(index),<br \/>                    ServiceName = dynamicServiceLayer.ID,<br \/>                    LayerName = layerInfoArray[index].Name,<br \/>                    LayerIndex = index<br \/>                });<br \/>            }<\/p>\n<p>            LayerVisibilityListBox.ItemsSource = visibleLayerList;<br \/>        }<\/p>\n<p>         void chkboxToggleVilible_Click(object sender, RoutedEventArgs e)<br \/>        {<br \/>            CheckBox tickedCheckBox = sender as CheckBox;<\/p>\n<p>            string serviceName = tickedCheckBox.Tag.ToString();<br \/>            bool visible = (bool)tickedCheckBox.IsChecked;<\/p>\n<p>            int layerIndex = Int32.Parse(tickedCheckBox.Name);<\/p>\n<p>            ESRI.ArcGIS.ArcGISDynamicMapServiceLayer dynamicServiceLayer = Map1.Layers[serviceName] as<br \/>                ESRI.ArcGIS.ArcGISDynamicMapServiceLayer;<\/p>\n<p>            List&lt;int&gt; visibleLayerList =<br \/>                dynamicServiceLayer.VisibleLayers != null<br \/>                ? dynamicServiceLayer.VisibleLayers.ToList() : new List&lt;int&gt;();<\/p>\n<p>            if (visible)<br \/>            {<br \/>                if (!visibleLayerList.Contains(layerIndex))<br \/>                    visibleLayerList.Add(layerIndex);<br \/>            }<br \/>            else<br \/>            {<br \/>                if (visibleLayerList.Contains(layerIndex))<br \/>                    visibleLayerList.Remove(layerIndex);<br \/>            }<\/p>\n<p>            dynamicServiceLayer.VisibleLayers = visibleLayerList.ToArray();<br \/>        }<\/code><\/p>\n<p>5\u3001\u6bd4\u4f8b\u5c3a\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Silverlight API\u63d0\u4f9b\u4e86\u4e00\u4e2aScaleBar\u7c7b\uff0c\u53ef\u4ee5\u65b9\u4fbf\u7684\u8bbe\u7f6e\u5730\u56fe\u6bd4\u4f8b\u5c3a\u3002<br \/><code>&lt;!--scale bar \u653e\u5728LayoutRoot Grid\u4e2d--&gt;<br \/>        &lt;Canvas HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" Margin=\"10,0,0,20\"&gt;<br \/>            &lt;esri:ScaleBar x:Name=\"scalebar\" MapUnit=\"DecimalDegrees\" DisplayUnit=\"Kilometers\" Foreground=\"Black\" FillColor1=\"White\" FillColor2=\"Blue\" \/&gt;<br \/>        &lt;\/Canvas&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u9700\u8981\u5728\u521d\u59cb\u5316\u7684\u65f6\u5019\u8bbe\u7f6escalebar\u7684Map\u5c5e\u6027\uff0c\u987a\u4fbf\u6765\u770b\u770b\u6574\u4e2a\u9875\u9762\u7684\u521d\u59cb\u5316\u5de5\u4f5c\uff1a<br \/><code>namespace demo_02_extendedmap<br \/>{<br \/>    public partial class Page : UserControl<br \/>    {<br \/>        private ESRI.ArcGIS.ArcGISDynamicMapServiceLayer california = new ESRI.ArcGIS.ArcGISDynamicMapServiceLayer();<br \/>        private string hidelayername;<\/p>\n<p>        public Page()<br \/>        {<br \/>            InitializeComponent();<\/p>\n<p>            scalebar.Map = Map1;<br \/>            scalebarstoryboard.Begin();<br \/>            TBzoomdurationvalue.Text = string.Format(\"\u5f53\u524d\u503c\uff1a{0}.{1}\u79d2\", Map1.ZoomDuration.Seconds, Map1.ZoomDuration.Milliseconds);<br \/>            TBpandurationvalue.Text = string.Format(\"\u5f53\u524d\u503c\uff1a{0}.{1}\u79d2\", Map1.PanDuration.Seconds, Map1.PanDuration.Milliseconds);<br \/>            california.Url = \"http:\/\/sampleserver1.arcgisonline.com\/ArcGIS\/rest\/services\/Specialty\/ESRI_StatesCitiesRivers_USA\/MapServer\";<br \/>            california.Opacity = 0.5;<br \/>            california.Initialized += new EventHandler&lt;EventArgs&gt;(dynamiclayer_initialized);<\/p>\n<p>            TBimagery.IsChecked = true;<br \/>            makestoryboard(\"WorldImageLayer\", 0, 1).Begin();<br \/>            \/\/\u5207\u6362\u5168\u5c4f\/\u7a97\u53e3<br \/>            Application.Current.Host.Content.FullScreenChanged += new EventHandler(fullscreen_changed);<br \/>        }<br \/>   }<br \/>}<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scalebarstoryboard\u662fxaml\u91cc\u81ea\u5b9a\u4e49\u7684\u4e00\u4e2a\u52a8\u753b\uff0c\u6548\u679c\u89c1\u6bd4\u4f8b\u5c3a\u65c1\u7684\u5355\u4f4d\u3002<\/p>\n<p>6\u3001\u5730\u56fe\u76f8\u5173\u64cd\u4f5c\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map\u63a7\u4ef6\u5df2\u7ecf\u5185\u7f6e\u4e86\u4e00\u4e9b\u952e\u76d8\u9f20\u6807\u4e8b\u4ef6\uff0c\u4f46\u76ee\u524d\u4e0d\u80fd\u50cfJavascript API\u4e2d\u90a3\u6837\u7981\u7528\u8fd9\u4e9b\u4e8b\u4ef6\u3002\u8fd9\u91cc\u8fd8\u7528\u5230\u4e86Silverlight\u7a0b\u5e8f\u7684\u4e00\u4e2a\u5168\u5c4f\u7279\u6027\uff0c\u5176\u5b9e\u662f\u5bf9Application.Current.Host.Content\u7684\u4e00\u4e2a\u5c5e\u6027\u505a\u4e86\u8bbe\u7f6e\u3002\u76f4\u63a5\u770b\u4ee3\u7801\u5427\uff1a<br \/><code>&lt;!--operation info--&gt;<br \/>            &lt;Canvas Width=\"215\" Height=\"110\" Margin=\"0,0,0,30\"  VerticalAlignment=\"Bottom\"&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectBottom}\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectMiddle}\" Fill=\"#77FF0000\" \/&gt;<br \/>                &lt;Rectangle Style=\"{StaticResource rectTop}\" \/&gt;<br \/>                    &lt;TextBlock Margin=\"20,15,15,0\" TextWrapping=\"Wrap\"<br \/>                           Text=\"\u5730\u56fe\u64cd\u4f5c\u63d0\u793a\uff1a&#13;\u53cc\u51fb\u653e\u5927&#13;Shift+\u62d6\u62fd\uff1a\u653e\u5927\u5230\u6307\u5b9a\u8303\u56f4&#13;Ctrl+Shift+\u62d6\u62fd\uff1a\u7f29\u5c0f\u5230\u6307\u5b9a\u8303\u56f4\" \/&gt;<br \/>                    &lt;ToggleButton x:Name=\"TBfullscreen\" Content=\"\u70b9\u51fb\u5207\u6362\u5730\u56fe\u5168\u5c4f\" HorizontalAlignment=\"Center\" Canvas.Left=\"100\" Canvas.Top=\"15\" Height=\"30\" Click=\"TBfullscreen_Click\" \/&gt;<br \/>            &lt;\/Canvas&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u653e\u5230Gridright Grid\u4e2d\uff0c<br \/><code>private void TBfullscreen_Click(object sender, RoutedEventArgs e)<br \/>        {<br \/>            System.Windows.Interop.Content content = Application.Current.Host.Content;<br \/>            content.IsFullScreen=!content.IsFullScreen;<br \/>        }<\/p>\n<p>        private void fullscreen_changed(object o,EventArgs e)<br \/>        {<br \/>            System.Windows.Interop.Content content=Application.Current.Host.Content;<br \/>            TBfullscreen.IsChecked = content.IsFullScreen;<br \/>        }<\/code><\/p>\n<p>7\u3001\u8fdb\u5ea6\u6761\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6700\u540e\u8fd8\u5269\u4e0b\u5730\u56fe\u4e2d\u7684\u8fd9\u4e2a\u8fdb\u5ea6\u6761\u3002\u5229\u7528\u4e86Map\u63a7\u4ef6\u5185\u7f6e\u7684\u4e00\u4e2aProgress\u4e8b\u4ef6\u3002<br \/><code>&lt;!--progressbar \u653e\u5728LayoutRoot\u4e2d--&gt;<br \/>        &lt;Grid HorizontalAlignment=\"Center\" x:Name=\"progressGrid\" VerticalAlignment=\"Center\" Width=\"200\" Height=\"20\" Margin=\"5,5,5,5\"&gt;<br \/>            &lt;ProgressBar x:Name=\"MyProgressBar\" Minimum=\"0\" Maximum=\"100\" \/&gt;<br \/>            &lt;TextBlock x:Name=\"ProgressValueTextBlock\" Text=\"100%\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" \/&gt;<br \/>        &lt;\/Grid&gt;<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5728esri:Map\u6807\u7b7e\u4e2d\u52a0\u5165\u4e00\u4e2a\u4e8b\u4ef6\uff1aProgress=&#8221;Map1_Progress&#8221;,<br \/><code>private void Map1_Progress(object sender, ESRI.ArcGIS.ProgressEventArgs e)<br \/>        {<br \/>            if (e.Progress < 100)<br \/>            {<br \/>                progressGrid.Visibility = Visibility.Visible;<br \/>                MyProgressBar.Value = e.Progress;<br \/>                ProgressValueTextBlock.Text = String.Format(\"\u6b63\u5728\u5904\u7406 {0}%\", e.Progress);<br \/>            }<br \/>            else<br \/>            {<br \/>                progressGrid.Visibility = Visibility.Collapsed;<br \/>            }<br \/>        }<\/code><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u597d\u4e86\u5230\u6b64\u5c31\u5df2\u7ecf\u8bb2\u5b8c\u4e86\u6574\u4e2a\u5730\u56fe\u529f\u80fd\u3002\u5c3d\u7ba1\u60f3\u5c3d\u53ef\u80fd\u8be6\u7ec6\u8bf4\u660e\u6bcf\u6bb5\u4ee3\u7801\uff0c\u4fbf\u4e8e\u521d\u5b66\u7684\u670b\u53cb\u5b66\u4e60\uff0c\u4f46\u4e5f\u4e0d\u53ef\u80fd\u9762\u9762\u4ff1\u5230\u3002\u6ca1\u6709\u8bb2\u660e\u767d\u7684\u5730\u65b9\u5927\u5bb6\u53ef\u4ee5\u81ea\u5df1\u601d\u8003\uff0c\u67e5\u5e2e\u52a9\u3002\u5b66\u4e60\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4e0d\u601d\u8003\uff0c\u65e0\u8fdb\u6b65\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u4e00\u8282\u6211\u4eec\u6765\u770b\u770bSilverlight API\u4e2d\u63d0\u4f9b\u7684\u5c0f\u73a9\u5177\u2014\u2014Widget\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u8282\u5728\u4e00\u4e2a\u5730\u56fe\u5b9e\u4f8b\u7684\u57fa\u7840\u4e0a\uff0c\u6765\u5bf9Silverlight API\u4e2d\u7684\u4e00\u4e9b\u57fa\u672c\u6982\u5ff5\u505a\u4e00\u4e2a\u603b\u4f53\u4e86\u89e3\uff0c\u987a\u4fbf\u719f\u6089\u4e00\u4e0bSilverlight\u7684\u5f00\u53d1\u77e5\u8bc6\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u70b9\u51fb\u8fd9\u91cc\uff0c\u76f4\u63a5\u770b\u6548\u679c\u3002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6839\u636e\u4e0a\u4e00\u8282\u7684\u77e5\u8bc6\uff0c\u53ef\u4ee5\u77e5\u9053\u8fd9\u4e2aSilverlight\u7a0b\u5e8f\u91cc\u5305\u542b\u4e86\u4e00\u4e2aMap\u63a7\u4ef6\uff0c\u5e76\u4e14\u91cc\u9762\u81f3\u5c11\u6709\u4e00\u4e2aWorldImagery\u7684\u56fe\u5c42\u3002\u90a3\u4e48Page.xaml\u91cc\u7684\u5173\u952e\u4ee3\u7801\u5f00\u8d77\u6765\u5e94\u8be5\u662f\u8fd9\u6837\u7684\uff1a&lt;Grid x:Name=&#8221;LayoutRoot&#8221;&gt; &lt;esri:Map x:Name=&#8221;Map1&#8243;&gt; &lt;esri:Map.Layers&gt; &lt;esri:ArcGISTiledMapServiceLayer ID=&#8221;WorldImageLayer&#8221; x:Name=&#8221;WorldImageLayer&#8221; Initialized=&#8221;WorldImageLayer_Initialized&#8221; Url=&#8221;http:\/\/services.arcgisonline.com\/ArcGIS\/rest\/services\/ESRI_Imagery_World_2D\/MapServer&#8221; \/&gt; &lt;\/esri:Map.Layers&gt; &lt;\/esri:Map&gt;&lt;\/Grid&gt;\u6240\u6709\u7684\u5e03\u5c40\u5de5\u4f5c\u90fd\u5728\u4e00\u4e2aGrid\u4e2d\u8fdb\u884c\uff0c\u7ed9\u5b83\u8d77\u4e2a\u540d\u5b57\u53ebLayoutRoot\u3002Grid\u91cc\u9762\u653e\u4e86\u4e00\u4e2aesri:Map\u5143\u7d20\uff08Map\u63a7\u4ef6\uff09\uff0c\u5b83\u7ee7\u627f\u81eaSilverlight\u7684Control\uff0c\u6240\u4ee5\u62e5\u6709Width\u548cHeight\u5c5e\u6027\uff0c\u9ed8\u8ba4\u662fAuto\uff0c\u81ea\u52a8\u586b\u5145\u6574\u4e2aGrid\u3002Map.Layers\u662f\u4e00\u4e2a\u96c6\u5408\uff0c\u53ef\u4ee5\u5f80\u91cc\u9762\u6dfb\u52a0layer\uff0c\u8fd9\u91cc\u7684layer\u6307\u7684\u662fArcGIS Server\u6216\u5176\u4ed6\u8f6f\u4ef6\u53d1\u5e03\u7684\u5730\u56fe\u670d\u52a1\uff0c\u76ee\u524dSilverlight API\u4e2d\u652f\u6301\u7684\u80fd\u591f\u76f4\u63a5\u4f7f\u7528\u7684\u6709ArcGISDynamicMapServiceLayer\uff0cArcGISTiledMapServiceLayer\uff0cArcGISImageServiceLayer\uff0c\u5206\u522b\u5bf9\u5e94ArcGIS Server\u53d1\u5e03\u7684\u52a8\u6001\u5730\u56fe\u670d\u52a1\uff0c\u7f13\u5b58\u5730\u56fe\u670d\u52a1\uff08\u4e24\u79cdMap Service\uff09\u548cImage Service\uff0c\u8fd9\u4e09\u79cd\u56fe\u5c42\u662f\u62ff\u6765\u5373\u7528\u7684\uff0c\u5982\u679c\u4f60\u60f3\u52a0\u5165\u522b\u7684\u5730\u56fe\u670d\u52a1\uff0c\u6bd4\u5982WMS\u670d\u52a1\uff0c\u5219\u9700\u8981\u81ea\u5df1\u7ee7\u627f\u76f8\u5e94\u7c7b\u578b\u7684\u7684Layer\uff1b\u6b64\u5916\u8fd8\u6709GraphicsLayer\uff0cElementLayer\uff0cSilverlight API\u7279\u6709\u7684FeatureLayer\u7b49\u3002\u8fd9\u4e9b\u90fd\u4f1a\u5728\u4e4b\u540e\u7684\u5c0f\u8282\u4e2d\u8bb2\u5230\u3002\u5f3a\u8c03\u4e00\u4e0b\uff0c\u4e0eADF\u5f00\u53d1\u91ccMapResourceManager\u4e00\u6837\uff0c\u5728Map\u4e2d\u52a0\u5165\u7684\u5185\u5bb9\u5b9e\u9645\u4e0a\u662f\u5730\u56fe\u670d\u52a1\uff0c\u4f46\u5f53\u505a\u4e00\u4e2alayer\u5904\u7406\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u5c31\u5bf9\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u7684\u6bcf\u4e00\u90e8\u5206\u6765\u505a\u8bf4\u660e\uff08\u4e0e\u4e0a\u56fe\u4e2d\u7684\u5e8f\u53f7\u76f8\u5bf9\u5e94\uff09\u3002 1\u3001\u5f53\u5730\u56fe\u79fb\u52a8\u65f6\u83b7\u53d6\u5730\u56fe\u8303\u56f4\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u5730\u56fe\u8303\u56f4\u6539\u53d8\u540e\uff0c\u663e\u793a\u51fa\u5f53\u524d\u5730\u56fe\u8303\u56f4\u7684\u8fb9\u754c\u503c\u3002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u90e8\u5206\u7684\u9875\u9762\u5e03\u5c40\u662f\u8fd9\u6837\u7684\uff1a&lt;Grid x:Name=&#8221;Gridright&#8221; Margin=&#8221;0,15,20,0&#8243; HorizontalAlignment=&#8221;Right&#8221; VerticalAlignment=&#8221;Stretch&#8221;&gt; &lt;!&#8211;extent&#8211;&gt; &lt;Canvas Width=&#8221;215&#8243; Height=&#8221;110&#8243; VerticalAlignment=&#8221;Top&#8221;&gt; &lt;Rectangle Style=&#8221;{StaticResource rectBottom}&#8221; \/&gt; &lt;Rectangle Style=&#8221;{StaticResource rectMiddle}&#8221; \/&gt; &lt;Rectangle Style=&#8221;{StaticResource rectTop}&#8221; \/&gt; &lt;TextBlock x:Name=&#8221;TBextent&#8221; Margin=&#8221;20,15,15,0&#8243; Text=&#8221;\u8303\u56f4\uff1a&#8221; TextWrapping=&#8221;Wrap&#8221; FontWeight=&#8221;Bold&#8221; \/&gt; &lt;\/Canvas&gt;&lt;\/Grid&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u6709\u5173xaml\u4e2d\u8be6\u7ec6\u7684\u5e03\u5c40\u77e5\u8bc6\u8bf7\u5927\u5bb6\u53c2\u7167\u5176\u4ed6\u4f8b\u5b50\u5b66\u4e60\uff0c\u8fd9\u91cc\u7a0d\u4f5c\u8bb2\u89e3\u3002\u5916\u9762\u7684Gridright\u8fd9\u4e2aGrid\u5c31\u662f\u9875\u9762\u53f3\u8fb91\u30012\u30013\u30016\u7684\u7236\u5bb9\u5668\uff0c\u4e4b\u6240\u4ee5\u4e0d\u7528StackPanel\u662f\u56e0\u4e3a6\u9700\u8981\u8d34\u7740\u9875\u9762\u5e95\u90e8\uff0cStackPanel\u4e2d\u7684\u5143\u7d20\u90fd\u4f1aflow\u8d34\u5230\u4e00\u8d77\u3002\u4e09\u4e2a\u77e9\u5f62\u7ec4\u5408\u4fbf\u6784\u6210\u4e86\u6574\u4f53\u8f6e\u5ed3\uff0c\u7531\u4e8e\u5b83\u4eec\u90fd\u5728\u4e00\u4e2aCanvas\u4e2d\uff0c\u6240\u4ee5\u4f1a\u4ea7\u751f\u538b\u76d6\u6548\u679c\u3002\u6700\u5148\u52a0\u5165\u7684rectBottom\u8fd9\u4e2a\u77e9\u5f62\u4fbf\u662f\u6700\u5e95\u4e0b\u7684\u9634\u5f71\u6548\u679c\uff0c\u4e2d\u95f4\u7684\u77e9\u5f62\u662f\u84dd\u8272\u6846\uff0c\u6700\u4e0a\u9762\u7684\u77e9\u5f62\u662f\u767d\u8272\u7684\u6587\u5b57\u663e\u793a\u533a\u57df\u3002\u201c{ }\u201d\u91cc\u7684\u5185\u5bb9\u5728xaml\u4e2d\u79f0\u4f5cmarkup extention\uff0cStaticResource\u662f\u4f7f\u7528\u5728\u522b\u5904\u5df2\u7ecf\u5b9a\u4e49\u597d\u7684\u8d44\u6e90\uff08resource\uff09\u6765\u5bf9\u672c\u5143\u7d20\u7684\u4e00\u4e9b\u5c5e\u6027\u8fdb\u884c\u81ea\u52a8\u8d4b\u503c\uff0c\u8fd9\u91cc\u7528\u6765\u4fee\u9970Rectangle\u7684\u5916\u89c2\u3002xaml\u4e2d\u9664\u4e86StaticResource\u8fd9\u79cdmarkup extention\u4e4b\u5916\u8fd8\u6709Binding\u548cTemplateBinding\u4e24\u79cdmarkup extention\uff0c\u5206\u522b\u7528\u4e8e\u6570\u636e\u7ed1\u5b9a\uff08data binding\uff09\u548c\u81ea\u5b9a\u4e49control\u7684\u5916\u89c2\u3002\u4e0a\u9762\u7684StaticResource\u662f\u5728App.xaml\u4e2d\u5b9a\u4e49\u7684\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u5728\u672c\u5de5\u7a0b\u7684\u4efb\u4f55\u9875\u9762\u4e2d\u4f7f\u7528\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u5b9a\u4e49\u4e3aLayoutRoot\u8fd9\u4e2aGrid\u7684Resource\u3002\u8d34\u51fa\u6765\u5927\u5bb6\u4e00\u770b\u5c31\u660e\u767d\u4e86\uff1a&lt;Application.Resources&gt; &lt;Style x:Key=&#8221;rectBottom&#8221; TargetType=&#8221;Rectangle&#8221;&gt; &lt;Setter Property=&#8221;RadiusX&#8221; Value=&#8221;10&#8243; \/&gt; &lt;Setter Property=&#8221;RadiusY&#8221; &hellip; <a href=\"https:\/\/blog.newnaw.com\/?p=443\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ArcGIS API for Silverlight\u5f00\u53d1\u5165\u95e8\uff082\uff09\uff1a\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\u5b9e\u4f8b<\/span> <span class=\"meta-nav\">&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/443"}],"collection":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=443"}],"version-history":[{"count":0,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/443\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}