作为网络应用中的地图数据,通常有不同的来源,或者用途不同,经常被组织并发布成不同的服务,在一个应用程序中使用多个地图服务是常有的事情。
如果一个web app中使用了多个地图服务,那么就需要将其中的一个服务设置成为Map控件的Primary Map Resource,之后,该服务变决定了整个地图的coordinate system和zoom levels。比如说有一个服务world,使用WGS84坐标系,做了4个比例尺的cache,将它设置成了Primary Map Resource。以下的情况会发生:
1、如果另有一个使用Xi’an 1980坐标系的名为China的dynamic service要和world叠加:
web app的zoom level只有4级,与world服务一致;在呈现时,world的数据是去取cache的,而China的数据是在服务器上经过动态投影,然后与world叠加起来;
2、如果另有一个使用Xi’an 1980坐标系的名为China的cached service(做了3级缓存,其中有两个比例尺与world中的两个比例尺一致)要和world叠加:
如下图:
3、同2类似,cached service,还是3个级别,不过这回China的坐标系也是WGS84:
那么在缩放到比例尺2、4的时候,两个服务都是取cache;比例尺3的时候,world取cache,China动态创建,不过不用动态投影了;比例尺5的时候China不可见;
4、China在做cache时,与world比例尺完全相同,坐标系相同:
那么,这种情况是最理想的,呈现数据时均取cache,速度最快。
所以,如果要将自己的数据与ArcGIS online的数据叠加使用,那么:1、应该选择后者为Primary Map Resource(有一种情况下,可以将自己的服务作为Primary Map Resource,就是自己数据的坐标系与ArcGIS Online或Google Map的坐标系相同,但cache的比例尺级别只是它们其中一个子集。);2、对于自己数据的地图文档,在data frame中将坐标系选择成Predefined > Geographic Coordinate Systems > World > WGS 1984,ArcMap会将你的数据动态投影到该坐标系下;3、做cache的时候选择load an existing tiling scheme from ArcGIS Online Services,这样能保证比例尺级别与其相同,ArcGIS Online默认有十几级cache,对于自己的数据,可以创建其中的几级,但可能出现的情况请参照前面的分析。对于要和Google Map叠加的数据,步骤也是上面的1、2、3,注意在2中要选择:Predefined > Projected Coordinate Systems > World > WGS 1984 Web Mercator。
如果在步骤3中,点击load an existing tiling scheme时出错,那很有可能是你跳过了步骤2。
很好!能在具体说明一下将googlemap和自己数据叠加的代码吗?
@匿名:
最直接的办法就是使用arcgis javascript api for google map;如果要用adf的话,请参考帮助中的例子:Common CustomDataSource