Flex Api For ArcGIS Server如何更改地图自带Scalebar的单位
如题所述我想更改map控件中scalebar的单位显示,map自带的scalebar显示为km和feet,现在我想改成中文的为"千米"和"英尺",我的开发环境是Flash...
如题所述
我想更改map控件中scalebar的单位显示,map自带的scalebar显示为km和feet,现在我想改成中文的为"千米"和"英尺",我的开发环境是FlashBuilder4.5,我的代码如下:
<fx:Script>
<![CDATA[
private function inv():void{
var a:ScaleBar=new ScaleBar
a.textMetric="千米"
a.textUS="英尺"
a.map=myMap
var bb:Class=a as Class
myMap.scaleBarClass=bb
}
]]>
</fx:Script>
<esri:Map id="myMap" logoVisible="false" scaleBarVisible="true" creationComplete="inv()" openHandCursorVisible="false" / >
但是在运行的时候出现了问题,那就是在地图的左下角没有显示比例尺,请问我应该怎么改才能达到想要的效果,谢谢。 展开
我想更改map控件中scalebar的单位显示,map自带的scalebar显示为km和feet,现在我想改成中文的为"千米"和"英尺",我的开发环境是FlashBuilder4.5,我的代码如下:
<fx:Script>
<![CDATA[
private function inv():void{
var a:ScaleBar=new ScaleBar
a.textMetric="千米"
a.textUS="英尺"
a.map=myMap
var bb:Class=a as Class
myMap.scaleBarClass=bb
}
]]>
</fx:Script>
<esri:Map id="myMap" logoVisible="false" scaleBarVisible="true" creationComplete="inv()" openHandCursorVisible="false" / >
但是在运行的时候出现了问题,那就是在地图的左下角没有显示比例尺,请问我应该怎么改才能达到想要的效果,谢谢。 展开
2个回答
展开全部
arcgis 中textMetric的值是“值+单位的“,这样修改不起作用。
只能是定义一个类重载scaleBarSkin中的measure方法
override protected function measure():void
{
var metric:String = hostComponent.textMetric;
var us:String = hostComponent.textUS;
if(metric)
{
if(metric.indexOf("km") > 0)
metric = metric.slice(0,metric.indexOf("km")) +"千米";
else if(metric.indexOf("m") > 0)
metric = metric.slice(0,metric.indexOf("m")) + "米";
}
if(us)
{
if(us.indexOf("mi") > 0)
us = us.slice(0,us.indexOf("mi")) + "英里";
if(us.indexOf("ft") > 0)
us = us.slice(0,us.indexOf("ft")) + "英尺";
}
hostComponent.textMetric =metric;
hostComponent.textUS = us;
super.measure();
然后在给地图定义外观
esri|ScaleBar
{
left:NaN;
right:45;
bottom:30;
skinClass: ClassReference("skin.MyScaleBarSkin");
}
这样就可以了!
只能是定义一个类重载scaleBarSkin中的measure方法
override protected function measure():void
{
var metric:String = hostComponent.textMetric;
var us:String = hostComponent.textUS;
if(metric)
{
if(metric.indexOf("km") > 0)
metric = metric.slice(0,metric.indexOf("km")) +"千米";
else if(metric.indexOf("m") > 0)
metric = metric.slice(0,metric.indexOf("m")) + "米";
}
if(us)
{
if(us.indexOf("mi") > 0)
us = us.slice(0,us.indexOf("mi")) + "英里";
if(us.indexOf("ft") > 0)
us = us.slice(0,us.indexOf("ft")) + "英尺";
}
hostComponent.textMetric =metric;
hostComponent.textUS = us;
super.measure();
然后在给地图定义外观
esri|ScaleBar
{
left:NaN;
right:45;
bottom:30;
skinClass: ClassReference("skin.MyScaleBarSkin");
}
这样就可以了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询