使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

1.环境搭建

  安装Arcgis Portal 10.4,Server 10.4,DataStore ,WebAdaptor for IIS,搭建arcgis api for javascript 4.3环境,具体配置过程自行百度,在此就不赘述。

2.语言设置

  设置Portal语言:"我的组织"->编辑设置->常规->语言,选中“中文简体”;

3.发布图层

  在arcgis pro 1.4中发布名为point,line,polygon的测试服务,此处可以对各图层进行唯一值渲染等配图操作,设置图层弹出框显示的字段内容、样式、模板等内容;

  简单配置图层样式:

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  发布图层:"Share"选项卡->Share As -> Web Layer -> Publish Web Layer。

  数据类型分为“引用注册数据”和“复制所有数据”,这两种数据类型支持不同的发布图层类型以及数据查询、添加、更新操作。

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  填写完“概述”、“标签”后,点击“分析”按钮,无错误提示后,选择“发布”:

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

4.自定义Web地图

  自定义BaseMap

  在Portal的地图选项卡中,添加一个自定义BaseMap

  添加图层->添加Web图层,

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  选择Arcgis Web Server,输入瓦片服务地址,并将“设定为底图”勾上),

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  遇到问题:添加自定义切图比例尺的瓦片服务,在Portal的Viewer.html可以看到,但自己写的页面去看不相应底图;

  解决办法:瓦片类型选择ArcGIS Online/BingMaps /Google Maps,不要选择自定义比例尺。另外,在API4.3版本中,读取自定义瓦片服务的类变为TileImageLayer。

  添加FeatureLayer

  接着找到point 、line、polygon三个图层,添加到地图上,选择保存按钮,把配置好的地图保存。此时可以在“我的内容”中看到配置的地图。

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  接下来,保存为地图"Fifth"。

  在地图查看器中打开"Fifth",内容列表处,可进对Line图层进行样式修改、统计、分析、设定标注、自定义弹出框等操作,以设置Line图层的弹出框样式为例:

使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

  制作完成后,效果如下图所示:

  使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

 5.调用地图

  使用JS API加载WebMap,需要用到Fifth的GUID编码,代码如下  

  var map,webMap,view,tileLyr;
require([
"esri/Map",
"esri/WebMap",
"esri/views/MapView",
"esri/layers/VectorTileLayer",
"dojo/domReady!"
], function(Map,WebMap, MapView, VectorTileLayer) { // Create a Map
map = new Map();
webMap=new WebMap({
portalItem: { // autocasts as new PortalItem()
id: "ea75705fbf3f40639de492578d247fae"
}
});
// Make map view and bind it to the map
view = new MapView({
container: "viewDiv",
map: webMap, zoom: 10
});

 6.遇到问题:

    1、配置esri/config.js中的PortalUrl后,网页中的地图服务地址依然指向www.arcgis.com

    解决办法:根据官方说明去修改esri/config.js文件中的PortalUrl,但是发现无效;修改init.js中第一个PortalUrl,改为本地Portal地址https://xxx.xxx.com/arcgis即可

    2、https://www.xxx.com/arcgis/sharing/rest/portals/self?f=json&culture=zh-cn  这个地址提示404错误,找不到内容,

    解决办法:将这个地址手工复制到浏览器中,如果提示“不安全”,则继续访问,直到出内容即可。

  此时Web页面应该能加载出地图了,恭喜!!!

  7.自定义底图样式

    通过修改root.json,可以实现不同风格的底图,从而实现在不同主题的应用中加载不同的风格的地图。

   具体步骤请参照   http://www.giser.net/?p=1522 。需要注意的地方是Vector Tile Layer 要处于根节点。

    使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap

上一篇:基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件


下一篇:Arcgis api for javascript学习笔记(3.2X版本)-初步尝试