我正在尝试将 WMS 图层从远程 ArcGIS 服务器添加到我的 GWT Web 应用程序。我正在使用gwt-openlayers
图书馆。
我的代码:
MapOptions defaultMapOptions = new MapOptions();
mapWidget = new MapWidget("100%", "100%", defaultMapOptions);
Map map = mapWidget.getMap();
//gNormal = new GoogleV3("Google Normal", gOptions);
//map.addLayer(gNormal);
WMSParams wmsParams = new WMSParams();
wmsParams.setFormat("image/png");
wmsParams.setLayers("1");
wmsParams.setStyles("");
WMSOptions wmsLayerParams = new WMSOptions();
wmsLayerParams.setUntiled();
wmsLayerParams.setProjection("EPSG:3857"); // is it correct setting for WMS layer?
// wmsLayerParams.setProjection("EPSG:102113");
// wmsLayerParams.setProjection("EPSG:4326");
wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);
String wmsUrl = "sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer";
arcGis = new WMS("ArcGis", wmsUrl, wmsParams);
map.addLayer(arcGis);
map.setBaseLayer(arcGis);
LonLat lonLat = new LonLat(-84.1,36.4); //USA
lonLat.transform("EPSG:4326", map.getProjection());
//System.out.println("map projection "+map.getProjection());
map.setCenter(lonLat, 3);
add(mapWidget);
我阅读了很多文章和 SO 问题,但我仍然无法解决问题。我的问题是在地图上渲染粉红色瓷砖而不是普通图像。我复制了许多stackoverflow
答案建议的图片网址,并看到了以下内容:
http://localhost:8084/sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer?FORMAT=image%2Fpng&LAYERS=1&STYLES=&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX=-135,45,-90,90&WIDTH=256&HEIGHT=256
没有localhost:8084
前缀 url 可以正常工作,并向我显示一小块地图。
问题:
1) 如何摆脱 WMS url 中的 localhost 前缀?在我的代码中wmsUrl
看起来sampleserver1...
是正确的。看来我的应用程序将它的根路径添加到远程 url。
2)我读到 WMS 层应该有以下投影 - "EPSG:3857"
. 这是真的吗?正如我上面提到的,当我在浏览器中手动输入没有“localhost”前缀的正确 url 时,我看到了一些图像,但我不确定它是否正确。可能图像被移动了。
3)我的最终目标是在地图上添加 2 个图层 - 谷歌地图图层和 WMS 图层。谷歌地图"EPSG:900913"
用作默认投影。有人可以给出将谷歌图层和 WMS 图层放在一张地图中的常见提示吗?可能有一些技巧,与预测相关的常见错误等等。