Answers:
Google的《条款及细则》不允许这样做。
如果使用其地图控件,则只能访问其底图。用于Google Maps API的ArcGIS JavaScript扩展与它们的地图控件一起使用,并允许您叠加来自ArcGIS Server的服务。
除了使用ArcGIS Online工具之外,还可以通过OpenWeb开源工具OpenLayers中的WAPI或WFS之类的开放API使用ArcGIS服务器数据。包装的OpenLayers谷歌地图API的Javascript -连同其他几个像Bing和Yahoo! -并增加了对开放标准(如WMS / WFS)的支持,以及对OpenStreetMap的支持。
现有使用某些ArcGIS API的支持,并且社区通常支持查找将现有ESRI服务与专有基础地图(例如Google Maps)一起使用的解决方案。
据我了解,您无法使用Google的地图并使ArcGIS Server发出请求。但是,当前的Javascript API允许您将Google的图像添加到地图中。
查看用于Google Maps的ArcGIS JavaScript扩展。
您还可以通过Silverlight,Flex或Javascript API 使用ArcGIS Online底图(可在此处找到其简介)。
虽然您无法直接访问Google Maps磁贴(除非直接与Google达成了明确的协议,这不太可能),但是您可以使用Google Static Map API。当然,您必须遵守该API的服务条款。
我的同事Rex在其关于该主题的博客文章中对此进行了很好的解释,此外还为ArcGIS API for SL / WPF提供了功能齐全的示例。
关于在MXD中滚动WMS图层并作为服务发布,这与ArcGIS Server最佳做法背道而驰。更好的方法是根据Rex的示例进行操作,或者,如果不能使用Silverlight,则为JavaScript或Flex API编写自己的图层类型。
回到您只是将其添加为资源之前,有人编写了一些ADF代码,使您可以连接到Bing(然后称为Virtual Earth)并将其像另一种服务一样对待。
我记不清是谁做的以及在哪里可以找到代码,我认为那是针对Server 9.2的,但这看起来有些熟悉:
用于AGS的自定义数据源VE
http://arcscripts.esri.com/details.asp?dbid=15504
您可能需要跳过一些步骤才能在服务后添加Google地图,并且/或者依靠ArcGIS Server来实现功能,但是我敢保证它是可行的。
首先,您必须获得google tile或任何地图提供者,然后将它们放在一些适当的目录中。
之后,您必须开发一个必须位于x / y / z fromat中的Web服务,该Web服务可以由clinet端应用程序(例如leaflet.ja或ArcGis javascript api)调用
此Web服务必须将图块图像提供给客户
您对此图像的请求可能是
{your url}+/google.hybrid/16/485/27411
最后将Web服务添加到客户端应用程序中。例如在arcgis javascript API中
cycleMap1 = WebTiledLayer('your url'+"/${level}/${col}/${row}",{
tileInfo: TileInfo({
dpi: 96,
rows: 256,
cols: 256,
origin: {
x: -20037508.342787,
y: 20037508.342787
},
spatialReference: {
wkid: 3857
},
lods: lods
})
});
cycleMap1.setVisibility(0)
map.addLayer(cycleMap1);
或在leaflet.js中
var tileHtbrid = 'your url' + '/{z}/{x}/{y}';
var tilemap = L.tileLayer(tileHtbrid, {
minZoom: 7, maxZoom: 25,
attribution: 'TileServer'
})
让您的客户考虑使用Microsoft的Bing Maps作为背景可能会更容易,因为可以免费使用。唯一要注意的是,您将需要运行ArGIS Server 10,因为在9.3.1上,您仍然需要为访问付费。这是指向ESRI页面和更多信息的链接。 http://www.esri.com/software/arcgis/arcgisonline/bing-maps.html