1

我正在尝试使用 ARCGis javascript API 和 dojo 在 dot net nuke 模块中显示地图。在 IE9 中这工作正常,但是在 Firefox 和 chrome 中地图中心在屏幕外,只有一半可以在 div 中看到。div 的另一半有正确放置的放大和缩小部分,但它只是那一半的白色背景。我可以拖动地图来填充该区域,但是一旦我放开它,它就会滑回靠近中间的随机点。在附加层中添加的对象也不能正确渲染。

在 chrome 中使用调试器我得到以下错误:

XMLHttpRequest cannot load . Origin http://localhost:63579 is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load http://server.arcgisonline.com/ArcGIS/rest/info?f=json. Origin http://localhost:63579 is not allowed by Access-Control-Allow-Origin.
Resource interpreted as Script but transferred with MIME type text/pl

我在 ascx 文件中的主要代码如下。

<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css" />
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" />
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dojox/grid/resources/Grid.css" />

<telerik:RadCodeBlock runat="server" ID="RadScriptBlock1">

<script type="text/javascript">
    djConfig = {
        parseOnLoad: true
    }
</script>

<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script>

<script type="text/javascript">
    dojo.require("esri.map");
    dojo.require("dojox.grid.DataGrid");
    dojo.require("dojo.data.ItemFileReadStore");
    dojo.require("esri.tasks.find");

    var findTask, findParams;
    var map, startExtent;
    var grid, store;

    function init() {
        //dojo.connect(grid, "onRowClick", onRowClickHandler);

        //Create map and add the ArcGIS Online imagery layer
        startExtent = new esri.geometry.Extent({ "xmin": -10981000, "ymin": 4215000, "xmax": -10608000, "ymax": 4361000, "spatialReference": { "wkid": 102100 } });
        map = new esri.Map("mapDiv", { extent: startExtent });

        var streetMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
        map.addLayer(streetMapLayer); 
        var oilGasLayer = new esri.layers.ArcGISDynamicMapServiceLayer("Layer2"); //
        map.addLayer(oilGasLayer);
 }

        dojo.addOnLoad(init);
</script>
</telerik:RadCodeBlock>

这是容器

<div id="mapDiv" style=" border: 1px solid #000; padding: 0; margin: 0"></div>

到目前为止,我的研究表明我需要在页面加载中处理 httpcontext,但这没有做任何事情,这意味着 Web 服务是问题所在。但由于这些服务在所有浏览器的其他页面中的 iframe 中都显示良好,我对此表示怀疑。加倍如此,因为那将是 esri 的底图,我怀疑他们的产品可以正常工作。

需要注意的另一件事是,当我使用 API 版本 1.6 时,这不是问题。

关于为什么这是行为不端的任何想法?

4

0 回答 0