一个spatialReference引发的血案

实现功能:用QueryTask类似拉框查询
本机环境:ArcGIS Server10.0、FlexViewer 2.4
正式环境:ArcGIS Server9.3、 FlexViewer 2.4
代码:
//假设graphicsExtent是拉框得到的范围
var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
if (graphicsExtent)
{


var query2:Query = new Query();
query2.returnGeometry = true;
query2.geometry = graphicsExtent.extent;
query2.outSpatialReference = map.spatialReference;


var queryTask:QueryTask = new QueryTask();
queryTask.url = logicMapQueryAddress2;
queryTask.useAMF = false;
queryTask.showBusyCursor = true;
queryTask.execute(query2, new AsyncResponder(onResul2, onFault2));

function onResul2(featureSet:FeatureSet, token:Object = null):void
{
if (featureSet.features.length == 0)
{
Alert.show("Please try again.");
}
else
{
trace(featureSet.features);
var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
map.extent = graphicsExtent.expand(1.5);
globalCache.putData("initExtent",graphicsExtent);
}
mapExtentLock.lock(map);
}
function onFault2(info:Object, token:Object = null):void
{
Alert.show(info.toString());
}

}

这样在本机环境没有错误,但在正式环境就会报错,错误信息:[RPC Fault faultString="Cannot perform query. Invalid query parameters." faultCode="500" faultDetail="inSR param is invalid: {"wkt":"PROJCS[\"XiAn80\",GEOGCS[\"XiAn80\",DATUM[\"D_XiAn_1980\",SPHEROID[\"GRS_1980_China\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",117.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"}"]
是由于空间参考问题引起的,最后解决方法:代码如下:
var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
if (graphicsExtent)
{
[b]var xmi:Number = graphicsExtent.extent.xmin;
var ymi:Number = graphicsExtent.extent.ymin;
var xma:Number = graphicsExtent.extent.xmax;
var yma:Number = graphicsExtent.extent.ymax;
var newExtent:Extent = new Extent(xmi,ymi,xma,yma);[/b]

var query2:Query = new Query();
query2.returnGeometry = true;
[b]query2.geometry = newExtent.extent;[/b]

var queryTask:QueryTask = new QueryTask();
queryTask.url = logicMapQueryAddress2;
queryTask.useAMF = false;
queryTask.showBusyCursor = true;
queryTask.execute(query2, new AsyncResponder(onResul2, onFault2));

function onResul2(featureSet:FeatureSet, token:Object = null):void
{
if (featureSet.features.length == 0)
{
Alert.show("Please try again.");
}
else
{
trace(featureSet.features);
var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
map.extent = graphicsExtent.expand(1.5);
globalCache.putData("initExtent",graphicsExtent);
}
mapExtentLock.lock(map);
}
function onFault2(info:Object, token:Object = null):void
{
Alert.show(info.toString());
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值