【问题标题】:how to load Arcgis map via proxy.ashx in iOS application?如何在 iOS 应用程序中通过 proxy.ashx 加载 Arcgis 地图?
【发布时间】:2023-03-09 09:22:01
【问题描述】:

我正在开发 iOS 应用程序,该应用程序使用 AGSRuntime Environment API for iOS 通过名为 "proxy.ashx" 的 .Net 代理加载地图图层(动态和要素图层)。如以下代码行:

NSString *MAPServiceURL = @"https://myDomain/sourceCodePath/proxy.ashx?http://my_ArcGis_Server/arcgis/rest/services/MapService/MapServer/"
NSString *FeatureLayerURL = @"https://myDomain/sourceCodePath/proxy.ashx?http://my_ArcGis_Server/arcgis/rest/services/MapService/MapServer/0"
self.dynamicLayer = [AGSDynamicMapServiceLayer dynamicMapServiceLayerWithURL:[NSURL URLWithString:MAPServiceURL]];

self.featureLayer = [[AGSFeatureLayer alloc] initWithURL:[NSURL URLWithString:FeatureLayerURL] mode:AGSFeatureLayerModeSnapshot];

我的问题是动态层没有出现。并且在 iOS 应用端没有发生错误。

在 proxy.ashx 端,它重定向请求并将响应(OK 200)作为 HTML 页面返回。

注意:在 Web 应用程序中成功加载的同一张地图通过相同的“proxy.ashx”使用适用于 JavaScript 的 AGSRuntime Environment API。

那么,我的错误是什么?

【问题讨论】:

    标签: ios dictionary proxy arcgis


    【解决方案1】:

    我发现当应用程序在 POST 中请求时,NSURLConnection 将从 URL 中删除不需要的参数(? 之后的所有内容,因为它是 GET 参数)。所以你可以尝试设置地图服务网址,不使用代理网址。

    NSString *mapServiceURL = @"http://my_ArcGis_Server/arcgis/rest/services/MapService/MapServer/";
    

    如果您不想将 ArcGIS 服务器设置为公共域,也可以使用 ArcGIS Web Adaptor 公开访问您的 Intranet ArcGIS 服务器。

    【讨论】:

    • 加载动态层时(通过使用 dynamicMapServiceLayerWithURL 消息)我没有识别请求类型(GET 或 POST)并且我没有找到任何方法(在 iOS 的 AGSRuntime Environment API 中)允许我更改它。
    • 你可以尝试通过删除代理URL直接请求吗?
    • 是的,当我连接到我的内部网络时,地图加载并且一切顺利,因为 my_ArcGis_Server 是一个内部服务器,没有公共 IP,所以我试图使用代理让我访问内部当我连接到互联网时 myDomain 的网络。
    • 如果有另一种方法(不同于使用proxy.ashx)从互联网访问内部网络中的my_ArcGis_Server,我想知道
    • 如果您不想将 ArcGIS 服务器设置为公共域,我认为您应该使用 ArcGIS Web Adaptor 对您的 Intranet ArcGIS 服务器进行公共访问。 enterprise.arcgis.com/en/server/latest/install/windows/…
    猜你喜欢
    • 2018-07-12
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2011-12-24
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多