微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决ArcGIS API for Silverlight 加载地图的内外网访问问题

先上一个类,如下:


public class BaseClass
{
        public static string getFullUri(string oldUriString)
        {
            string newUriString = oldUriString;
            //处理相对地址============================================================
            if (newUriString[0] == '/')
            {
                string shost = System.Windows.browser.HtmlPage.Document.DocumentUri.Host;
                int sport = System.Windows.browser.HtmlPage.Document.DocumentUri.Port;
                newUriString = "http://" + shost + (sport == 80 ? "" : ":" + sport.ToString()) + newUriString;
            }


            if (!newUriString.StartsWith("http"))
            {
                string shost = System.Windows.browser.HtmlPage.Document.DocumentUri.Host;
                int sport = System.Windows.browser.HtmlPage.Document.DocumentUri.Port;
                string slocal = System.Windows.browser.HtmlPage.Document.DocumentUri.LocalPath;
                slocal = slocal.Substring(0,slocal.LastIndexOf('/'));
                Uri turi = new Uri("http://" + shost + (sport == 80 ? "" : ":" + sport.ToString()) + slocal + "/" + newUriString,UriKind.Absolute);
                newUriString = turi.ToString();
            }
            return newUriString;
        }
   }
 
 <esri:Map>
       <esri:Map.Layers>
                <esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="/arcgis/rest/services/HSDQ/MapServer/"/>
       </esri:Map.Layers>
 </esri:Map>
 

 public MainPage()
 {
      InitializeComponent();
      ArcGISTiledMapServiceLayer layer = myMap.Layers["BaseLayer"] as ArcGISTiledMapServiceLayer;
      layer.Url = BaseClass.getFullUri(layer.Url);
}


这样就可以解决内网IP地址访问和外网IP地址同样访问的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐