【发布时间】:2013-12-01 19:05:53
【问题描述】:
我有 WMTS 背景层、WMS 层和图形层中的点数组。这些点具有用于计算地图范围的 wgs84latlng 坐标。
不工作:
当使用 GeometryService 计算范围时,wms 图层很好地投影在其顶部,只是它的位置向上移动,并且与 GeometryService 计算的 GraphicsLayer 中点的位置不对应...
服务:
<esri:GeometryService id="geometryService"
concurrency="last"
fault="geometryService_faultHandler(event)"
projectComplete="projectCompleteHandler(event)"
showBusyCursor="true"
url="http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"/>
<esri:GeometryService id="geometryService2"
concurrency="last"
fault="geometryService_faultHandler(event)"
projectComplete="projectCompleteHandler2(event)"
showBusyCursor="true"
url="http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"/>
层:
<esri:ArcGISTiledMapServiceLayer id="arcgisonlineLayer" load="{trace(arcgisonlineLayer.version)}"
url="http://services.arcgisonline.nl/arcgis/rest/services/Basiskaarten/PDOK_BRT/MapServer"/>
<esri:WMSLayer url="{wmsLayerUrl}">
<esri:visibleLayers>
<s:ArrayList>
<fx:String>0</fx:String><!-- GTG vlakken -->
<fx:String>1</fx:String><!-- GTG lijnen -->
<!--<fx:String>2</fx:String>--><!-- Provinciale wegen-->
<fx:String>3</fx:String><!-- GTG punten -->
<fx:String>4</fx:String><!-- Kilometrering -->
<fx:String>5</fx:String><!-- Kilometrering -->
<fx:String>6</fx:String><!-- Kilometrering -->
<fx:String>7</fx:String><!-- Kilometrering -->
<fx:String>8</fx:String><!-- Beheergebied -->
<!--<fx:String>9</fx:String>--><!-- Eigendomsgebied -->
<!--<fx:String>10</fx:String>--><!-- Onderhoudsgebied -->
</s:ArrayList>
</esri:visibleLayers>
</esri:WMSLayer>
<esri:GraphicsLayer id="lichtpuntLayer" />
计算范围:
public function set mapItemBounds(value:Object):void
{
_mapItemBounds = value as LatLngBounds;
if(_mapItemBounds)
{
var wmExtent:WebMercatorExtent = new WebMercatorExtent(
_mapItemBounds.getSouthWest().lng(),
_mapItemBounds.getSouthWest().lat(),
_mapItemBounds.getNorthEast().lng(),
_mapItemBounds.getNorthEast().lat());
var outSR:SpatialReference = new SpatialReference(28992);
const projectParameters:ProjectParameters = new ProjectParameters;
projectParameters.geometries = [ wmExtent];
projectParameters.outSpatialReference = outSR;
geometryService.project(projectParameters);
}
}
计算地图上的位置点
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(mapItemsProject) {
mapItemsProject = false;
var mapItemGeometryArr:Array = new Array();
for each(var mapItem:IMapItem in mapItems) {
var latlng:LatLng = new LatLng(mapItem.wgs84Lat, mapItem.wgs84Lon);
mapItemGeometryArr.push(latlng.mapPoint())
}
var outSR:SpatialReference = new SpatialReference(28992);
const projectParameters:ProjectParameters = new ProjectParameters;
projectParameters.geometries = mapItemGeometryArr;
projectParameters.outSpatialReference = outSR;
geometryService2.project(projectParameters);
}
工作正常:
...在使用默认 arcgisonline.com worldSteetMap 时进行比较。
层:
<esri:ArcGISTiledMapServiceLayer id="serviceLayer"
url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
visible="{viewModeButtonBar.selectedIndex == 0}"/>
<esri:ArcGISTiledMapServiceLayer
url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
visible="{viewModeButtonBar.selectedIndex == 1}"/>
<!--PDOK layer is incompatable with lichtpuntLayer and id="map". If lichtpuntLayer and another map in declarations it will show up-->
<!--<esri:ArcGISTiledMapServiceLayer visible="true"
url="http://services.arcgisonline.nl/arcgis/rest/services/Basiskaarten/PDOK_BRT/MapServer"/>-->
<esri:WMSLayer url="{wmsLayerUrl}">
<esri:visibleLayers>
<s:ArrayList>
<fx:String>0</fx:String><!-- GTG vlakken -->
<fx:String>1</fx:String><!-- GTG lijnen -->
<!--<fx:String>2</fx:String>--><!-- Provinciale wegen -->
<fx:String>3</fx:String><!-- GTG punten -->
<fx:String>4</fx:String><!-- Kilometrering -->
<fx:String>5</fx:String><!-- Kilometrering -->
<fx:String>6</fx:String><!-- Kilometrering -->
<fx:String>7</fx:String><!-- Kilometrering -->
<fx:String>8</fx:String><!-- Beheergebied -->
</s:ArrayList>
</esri:visibleLayers>
</esri:WMSLayer>
<esri:GraphicsLayer id="lichtpuntLayer"/>
计算范围:
public function set mapItemBounds(value:Object):void
{
_mapItemBounds = value as LatLngBounds;
if(_mapItemBounds)
{
map.extent = new WebMercatorExtent(
_mapItemBounds.getSouthWest().lng(),
_mapItemBounds.getSouthWest().lat(),
_mapItemBounds.getNorthEast().lng(),
_mapItemBounds.getNorthEast().lat());
}
}
有人知道为什么这不起作用吗?
【问题讨论】:
标签: apache-flex adobe arcgis esri wms