flex 地图居中显示

第一步调用类方法:

MapUni.dataExtent([cityGra],map,0.003);

layerxuanran.add(cityGra);

第二步导入类  (MapUni.as类)

package com.mapUni.BaseClass

{

import com.esri.ags.Graphic;

import com.esri.ags.Map;

import com.esri.ags.SpatialReference;

import com.esri.ags.geometry.Geometry;

import com.esri.ags.geometry.MapPoint;

import com.esri.ags.webmap.supportClasses.PopUpFieldInfo;

import com.mapUni.BaseClass.Buffer.Buffer;

import com.mapUni.BaseClass.ErrorWindow.ErrorClass;

import com.mapUni.BaseClass.GetLayerUrl.GetLayerUrl;

import com.mapUni.BaseClass.Graphic.PointGraphic;

import com.mapUni.BaseClass.InfoWindow.PopUpInfoWindow;

import com.mapUni.BaseClass.LayerRenderer.LayerRenderer;

import com.mapUni.BaseClass.LoadXML.LoadXML;

import com.mapUni.BaseClass.MapExtent.DataExtent;

import com.mapUni.BaseClass.Relation.Relation;

import com.mapUni.BaseClass.RiverRenderer.RiverRenderer;

import com.mapUni.BaseClass.Search.Search;

import com.mapUni.BaseClass.SpringPopUpWindow.SpringPopUpWindow;

import com.mapUni.BaseClass.WebServices.CallWebServices;

public class MapUni

{

/**

*

* <p>对传入的几何图形进行缓冲并得到缓冲图形</p>

*

* @param geomServUrl 几何服务地址

* @param geometry 要进行缓冲的几何图形。数组格式,可同时缓冲多个图形

* @param distances 要缓冲的距离。数组格式,可对每个几何图形进行不同距离的多层缓冲

* @param unit 缓冲距离的单位。从 GeometryService 中获取

* @param onResult 缓冲成功后要执行的方法, 参数为数组格式

* @param resultParam 要对缓冲成功后执行的方法传递的额外参数,可选

* @param onFault 缓冲失败后要执行的方法,可选

* @param faultParam 要对缓冲失败后执行的方法传递的额外参数,可选

* @param spatialReference 要缓冲的几何图形、缓冲方法、缓冲后的输出图形的空间参考坐标系,

*        如果要缓冲的几何图形因为没有空间参考坐标系而报错,可以在此传入来解决,可选

* @return 判断值,判断传入几何数据是否有问题

*

*/

public static function buffer(geomServUrl:String, geometry:Array, distances:Array, unit:Number, onResult:Function,

resultParam:Object=null, onFault:Function=null, faultParam:Object=null,

spatialReference:SpatialReference=null):void

{

new Buffer(geomServUrl, geometry, distances, unit, onResult, resultParam, onFault, faultParam, spatialReference);

}

/**

*

* <p>对指定地图图层进行条件查询</p>

*

* @param layerUrl 图层地址 所要查询的地图图层地址

* @param qGeometry 图形查询条件 参数为 Geometry 格式的图形

* @param qWhere 属性查询条件 可以为针对字段的属性查询条件,如:"name=‘好‘"如果要查询所有记录,可以将此参数设置为"1=1" ,但效率很低,不推荐这样使用;

* @param result 查询成功后要执行的方法,参数 FeatureSet

* @param resultParam 要对查询成功后执行的方法传递的额外参数,可选

* @param outField 查询记录中返回的属性字段,默认为全部返回,可选

* @param useAMF 查询返回数据时是否使用 AMF 格式文件,当使用的 ArcGIS Server 10 以上的地图服务时把此参数改为true,可以明显提高查询的速度。默认为true。可选

* @param fault 查询失败后要执行的方法,可选

* @param faultParam 要对查询失败后执行的方法传递的额外参数,可选

* @param returnGeometry 是否返回几何图形,默认为true,可选

*

*/

public static function search(layerUrl:String, qGeometry:Geometry, qWhere:String, result:Function, resultParam:Object=null,

outField:Array=null, useAMF:Boolean=true, fault:Function=null, faultParam:Object=null,

returnGeometry:Boolean=true):void

{

new Search(layerUrl, qGeometry, qWhere, result, resultParam, outField, useAMF, fault, faultParam, returnGeometry);

}

/**

*

* <p>显示传入数据所在的地图区域</p>

*

* @param dataCollection 显示对象数据集合。支持 Array 和 ArrayCollection 格式,内容为 Graphic 或 MapPoint 的集合,

* @param map 要进行缩放的地图

* @param MapExtentProportion 地图向外延伸显示区域所占本身区域的比例,默认为0.3

*

*/

public static function dataExtent(dataCollection:Object, map:Map, MapExtentProportion:Number=0.3):void

{

new DataExtent(dataCollection, map, MapExtentProportion);

}

/**

*

* <p>根据图层名称获取地图图层编号</p>

*

* @param map 要从中检索的地图或图层,可以为 Map, 也可以为 ArcGISDynamicMapServiceLayer 或者 ArcGISTiledMapServiceLaye

* @param layerName 要获取的图层名称

* @param returnUrlType 返回的图层地址类型,1为普通地图服务的图层地址,2为"FeatureService"地图服务的图层地址,默认为1,

*       若输入规定数据以外的参数,程序默认将以1来处理,可选参数

* @return 返回图层名对应的图层地址

*

*/

public static function layerUrl(mapOrLayer:Object, layerName:String, returnUrlType:uint=1):String

{

var layerUrlCalss:GetLayerUrl = new GetLayerUrl(mapOrLayer, layerName, returnUrlType);

return layerUrlCalss.getUrl();

}

/**

*

* <p>创建图片符号的点信息</p>

*

* @param x 地图上的x轴坐标

* @param y 地图上的y轴坐标

* @param picUrl 图片符号的所需图片的相对路径,可选参数

* @param attribute 要为点添加的属性信息,可选参数

* @param picWidth 图片符号的宽,可选参数

* @param picHeight 图片符号的高,可选参数

* @param picXoffset 图片符号在x轴的偏移值,可选参数

* @param picYoffset 图片符号在y轴的偏移值,可选参数

* @param picAngle 图片符号的旋转值,可选参数

* @return 对象为点的Graphic

*

*/

public static function pointGraphic(x:Number, y:Number, picUrl:String, attribute:Object=null, picWidth:Number=0, picHeight:Number=0,

picXoffset:Number=0, picYoffset:Number=0, picAngle:Number=0):Graphic

{

var pointClass:PointGraphic = new PointGraphic(x, y, picUrl, attribute, picWidth, picHeight, picXoffset, picYoffset, picAngle);

return pointClass.getPointGraphic();

}

/**

*

* <p>气泡显示点位的信息</p>

*

* @param map 地图

* @param graphic 目标图形

* @param title 标题

* @param content 内容。如果需要换行可以使用换行符来实现,可选参数

* @param isShow 是否要立即弹出信息框

* @param showLocated 气泡框显示的位置

* @param link 第一个超连接的地址,可选参数

* @param linkName 第一个超链接的名称,可选参数

* @param link2 第二个超连接的地址,可选参数

* @param linkName2 第二个超链接的名称,可选参数

* @param link3 第三个超连接的地址,可选参数

* @param linkName3 第三个超链接的名称,可选参数

*

*/

public static function popupInfoWindow(map:Map, graphic:Graphic, title:String, content:String="",

isShow:Boolean=false, showLocated:MapPoint=null,

link:String="", linkName:String="",

link2:String="", linkName2:String="",

link3:String="" ,linkName3:String=""):void

{

new PopUpInfoWindow(map, graphic, title, content, isShow, showLocated, link, linkName, link2, linkName2, link3, linkName3);

}

/**

*

* <p>调用外部的WebService方法</p>

*

* @param WebServiceURL WebService链接地址

* @param httpFunctionName 要调用的函数的名称

* @param httpFunctionParameter 调用函数所需的参数

* @param onResultFunction 成功调取数据后的响应函数,参数类型 ResultEvent

* @param onResultParameter 用于向成功调取数据后的响应函数中传递参数,可选参数

* @param onFaultfunction 没有成功调取数据后的响应函数,可选参数,参数类型 FaultEvent

* @param onFaultParameter 用于向没有成功调取数据后的响应函数中传递参数,可选参数

*

*/

public static function callWebService(WebServiceURL:String, httpFuncName:String, httpFuncParam:Array,

onResult:Function, onResultParam:Object = null,

onFault:Function = null, onFaultParam:Object =null):void

{

new CallWebServices(WebServiceURL, httpFuncName, httpFuncParam, onResult, onResultParam, onFault, onFaultParam);

}

/**

*

* <p>错误、提示信息窗口</p>

*

* @param errorString 要显示的错误或提示信息,如果需要换行可以使用换行符

*

*/

public static function errorWindow(errorString:String):void

{

new ErrorClass(errorString);

}

/**

*

* <p>比较传入两组几何图形中各个图形间的空间关系</p>

*

* @param geomServUrl 几何服务地址

* @param geometryList1 被搜索的几何图形集合

* @param geometryList2 搜索条件几何图形集合

* @param onResult 缓冲成功后要执行的方法,参数为一个数组

* @param resultParam 要对缓冲成功后执行的方法传递的额外参数

* @param onFault 缓冲失败后要执行的方法

* @param faultParam 要对缓冲失败后执行的方法传递的额外参数

* @param spatialRelationship 指定两组几何图形要素满足的空间关系,<br/>可以通过RelationParameters中的静态常量来指定此参数值,默认为完全包含。

*

*/

public static function relation(geomServUrl:String, geometryList1:Array, geometryList2:Array, onResult:Function,

resultParam:Object=null, onFault:Function=null, faultParam:Object=null,

spatialRelationship:String="esriGeometryRelationIn"):void

{

new Relation(geomServUrl, geometryList1, geometryList2, onResult, resultParam, onFault, faultParam, spatialRelationship);

}

/**

*

* <p>在地图上渲染指定的对象,返回鼠标选择的对象</p>

*

* @param map 地图

* @param layerUrl 图层地址

* @param layerNameField 图层中的名称字段

* @param callback 回调函数

* @param queryGeometry 几何图形查询条件

* @param queryWhere 属性查询条件

*

*/

public static function layerRenderer(map:Map, layerUrl:String, layerNameField:String, callback:Function, queryGeometry:Geometry=null, queryWhere:String="1=1", outField:Array=null):void

{

new LayerRenderer(map, layerUrl, layerNameField, callback, queryGeometry, queryWhere, outField);

}

/**

*

* <p>河流选择</p>

*

* @param map

* @param riverLayers RiverRendererParam集合

* @param callback

*

*/

public static function riverRenderer(map:Map, riverLayers:Array, callback:Function):void

{

new RiverRenderer(map, riverLayers, callback);

}

/**

* <p>加载 xml 格式文件</p>

*

* @param xmlUrl xml文件地址

* @param result 加载完成后执行的方法, 有一个参数 <p>function (vlaue:XML):void{...}</p>

* @param fault 加载失败时加载的方法,可不传。当不传时弹出默认错误窗口.当传时有两个参数  <p>function (value:String, error:FaultEvent):void{...}</p>

*

*/

public static function loadXML(xmlUrl:String, result:Function, fault:Function=null):void

{

new LoadXML(xmlUrl, result, fault);

}

/**

*

* <p>气泡窗口,碧水蓝天版</p>

*

* @param map 地图

* @param graphic 目标图形

* @param title 标题

* @param popUpFieldInfoArray 属性显示字段, popUpFieldInfo 内容的数组

* @param isShow 是否要立即弹出信息框

* @param showLocated 气泡框显示的位置

* @param popUpLinkInfoArray 气泡窗口中的超链接按钮, popUpLinkInfo 内容的数组

* @param isCenter 弹出框是否居中

*/

public static function springPopUpWindow(map:Map, graphic:Graphic, title:String, popUpFieldInfoArray:Array, isShow:Boolean=false, showLocated:MapPoint=null,

titleGgColor:Number=NaN, titleTextColor:Number=NaN, popUpLinkInfoArray:Array=null,isCenter:Boolean=false):void

{

new SpringPopUpWindow(map, graphic, title, popUpFieldInfoArray, isShow, showLocated, titleGgColor, titleTextColor, popUpLinkInfoArray,isCenter);

}

}

}

(DataExtent.as类)

////////////////////////////////////////////////////////////////////////////////

//

//

////////////////////////////////////////////////////////////////////////////////

package com.mapUni.BaseClass.MapExtent

{

import com.esri.ags.Graphic;

import com.esri.ags.Map;

import com.esri.ags.geometry.Extent;

import com.esri.ags.geometry.Geometry;

import com.esri.ags.geometry.MapPoint;

import com.mapUni.BaseClass.ErrorWindow.ErrorClass;

import mx.collections.ArrayCollection;

/**

*

* 地图缩放到所有传入的图形对象显示集合的区域

*

* 初始化时需传入两个参数,

* dataCollection 为数据源,支持 Array 和 ArrayCollection 格式,内容为 Graphic 或 MapPoint 的集合,

* map 为要进行缩放的地图

* MapExtentProportion 可选参数,用于缩放的区域的边缘向外延伸为区域长宽的比例

*

* @author liuxl

*

*/

public class DataExtent

{

/**

*

* 设置地图显示区域

*

* @param dataCollection 要显示的对象集合

* @param map 地图

* @param MapExtentProportion 地图缩放的区域的边缘向外延伸为区域长宽的比例

*

*/

public function DataExtent(dataCollection:Object, map:Map, MapExtentProportion:Number=0.3)

{

var collection:ArrayCollection = new ArrayCollection();

/*

判断数据类型

*/

if(dataCollection is Array)

{

collection = new ArrayCollection(dataCollection as Array);

}

else if(dataCollection is ArrayCollection)

{

collection = dataCollection as ArrayCollection;

}

else

{

return;

}

_map = map;

_MapExtentProportion = MapExtentProportion;

if(_map)

{

if(collection.length)

{

//判断集合内的数据类型

if(collection[0] is Graphic || collection[0] is Geometry)

{

setMapExtent(collection);

}

}

}

}

/**

* 在地图上加载多点或单点后,屏幕缩放到点所在的位置时向外延伸的比例值<br/>

* 比例值越大,缩放后的地图比例尺越小。默认值为0.1

*/

private var _MapExtentProportion:Number = 0.3;

/**

* 地图 若不传入此参数则地图不会自动缩放到所加载点的区域

*/

private var _map:Map;

/**

*

* 进行地图显示区域的判断

*

* @param dataColl 显示对象数据集

*

*/

private function setMapExtent(dataColl:ArrayCollection):void

{

var minX:Number = 180;

var minY:Number = 90;

var maxX:Number = 0;

var maxY:Number = 0;

/*

遍历数据

通过对比替换来得到地图要显示区域边缘的最大值

*/

for(var i:int=0;i<dataColl.length;i++)

{

var longitude:Number;

var latitude:Number;

var geometry:Geometry = null;

if(dataColl[i] is Graphic)

{

var graphic:Graphic = dataColl[i] as Graphic;

geometry = graphic.geometry;

}

else if(dataColl[i] is Geometry)

{

geometry = dataColl[i] as Geometry;

}

else

{

return;

}

if(geometry)

{

if(geometry.type == Geometry.MAPPOINT)

{

var mapPoint:MapPoint = geometry as MapPoint;

longitude = mapPoint.x;

latitude  = mapPoint.y;

if(longitude && latitude)

{

if(minX > longitude)

minX = longitude;

if(minY > latitude)

minY = latitude;

if(maxX < longitude)

maxX = longitude;

if(maxY < latitude)

maxY = latitude;

}

}

else

{

if(minX > geometry.extent.xmin)

minX = geometry.extent.xmin;

if(minY > geometry.extent.ymin)

minY = geometry.extent.ymin;

if(maxX < geometry.extent.xmax)

maxX = geometry.extent.xmax;

if(maxY < geometry.extent.ymax)

maxY = geometry.extent.ymax;

}

}

}

var xNum:Number = maxX - minX;

var yNum:Number = maxY - minY;

if(xNum && yNum && xNum!=-180 && yNum!=-90)

{

/*

_MapExtentProportion 的值来控制地图缩放区域要向外延伸的范围站本身显示区域的比例值

*/

var _minX:Number = minX - xNum * _MapExtentProportion;

var _minY:Number = minY - yNum * _MapExtentProportion;

var _maxX:Number = maxX + xNum * _MapExtentProportion;

var _maxY:Number = maxY + yNum * _MapExtentProportion;

_map.extent = new Extent(_minX, _minY, _maxX, _maxY);

}

else if(minX != 180 && minY != 90)

{

/*

如果传入的数据只有一个点

则居中显示此点,并且地图比例尺会放大一倍

*/

_map.centerAt(new MapPoint(minX,minY));

//_map.scale = _map.scale/2;

}

else

{

showError("没有成功根据数据完成指定区域的显示");

}

}

/**

* 错误提示

*/

private function showError(errorString:String):void

{

var info:String =

"方法:DataExtent\n" +

"功能:将地图缩放移动到传入数据所在的区域\n" +

"错误:" + errorString;

//new ErrorClass(info);

}

}

}

时间: 2024-10-18 23:41:43

flex 地图居中显示的相关文章

设置不知道坐标系的地图居中显示

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello World</title> <link rel="stylesheet" href="http://jsapi.thinkgis.cn/esri/css/esri.css"> <scrip

flex的Accordion组件头部文本居中显示

flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spar

百度API地图的标注不是居中显示,而是显示在左上角

对地图所在的div做了显示隐藏之类操作,标注就不是居中显示,而是显示在左上角 合理解决方式 map.panBy(305,165); html: <div id="allmap" style="width:560px;height:400px;"></div> js: var initPoint = new BMap.Point(longitude,latitude); console.log(initPoint);map.centerAndZ

div中img依据不同分辨率居中显示,超出部分隐藏

在做banner居中时 碰到的问题,知道可以用背景图实现居中显示,但是内心是想深究下的,故找到几种办法收集一下,后面两种真的是奇技淫巧 来着下面两处 https://www.zhihu.com/question/39742237 https://www.v2ex.com/t/187544 flex position:absolute + negative margin background-image + background-size + background-position 4.父元素po

html5定位并在百度地图上显示

在开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能. navigator.geolocation.getCurrentPosition(callback); 在获取坐标成功之后会执行回调函数 callback; callback 方法的参数就是获取到的坐标点:然后可以初始化地图,设置控件.中心点.缩放等级,然后给地图添加point的overlay: var map = new BM

安卓 WebView加载本地图片时居中显示

在一个项目中使用WebView显示gif图片(自定义的View无法放大gif),当图片过小时只在左侧显示,经过研究发现无论设置android:layout_gravity="center_horizontal"还是设置android:gravity="center_horizontal" 都无法居中显示,而且还设置了android:layout_width="wrap_content",但是实际上WebView并没有自适应内容,它的宽度占了屏幕宽

CSS文本居中显示

因为一直为元素居中问题而困扰,所以决定把自己遇到和看到的方法记录下来,以便以后查看 如果要让inline或inline-block元素居中显示,则父元素css中包含text-align:center; 如果让block元素居中,为其本身添加margin:0 auto; 复杂情形下可以用: display:flex; /*盒子模型*/ flex-direction: row; /*横向*/ justify-content: space-around; /*主轴居中*/ align-items: c

Js打开网页后居中显示

使用JavaScript定义打开网页后居中显示,并可为窗口设置大小,使用“window.open”方法打开新窗口:先来看完整的代码及调用方法: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>打开居中的窗口</title> <script language="javascript"> //参数-url:要打开的网站,winname:打开后

Android Hack1 使用weight属性实现视图的居中显示

本文地址:http://www.cnblogs.com/wuyudong/p/5898403.html,转载请注明源地址. 如果要实现如下图所示的将按钮居中显示,并且占据父视图的一半,无论屏幕是否旋转 合用weightSum属性和layout_weight属性 不同Android设备的尺寸往往是不同的.作为开发者,我们需要创建适用于不同尺寸屏幕的XML文件.硬编码是不可取的,因此需要其他方法来组织视图. 本文分析如何合用layout_weight和weightSum这两个属性来填充布局内部的任意