在API中用线/面元素.extent.center获得的中心点实际上是线面元素围成的矩形框的内点,这个点往往不在线/面上面,下面的方法就能算出线/面的中心点。
private function getGeomCenter(gra:Graphic):MapPoint
{
var pt:MapPoint;
switch (gra.geometry.type)
{
case Geometry.MAPPOINT:
{
pt = gra.geometry as MapPoint;
break;
}
case Geometry.POLYLINE:
{
var pl:Polyline = gra.geometry as Polyline;
var pathCount:Number = pl.paths.length;
var pathIndex:int = int((pathCount / 2) - 1);
var midPath:Array = pl.paths[pathIndex];
var ptCount:Number = midPath.length;
var ptIndex:int = int((ptCount / 2) - 1);
pt = pl.getPoint(pathIndex, ptIndex);
break;
}
case Geometry.POLYGON:
{
var poly:Polygon = gra.geometry as Polygon;
var RingCount:Number = poly.rings.length;
var ringIndex:int = int((RingCount / 2) - 1);
var midRing:Array = poly.rings[ringIndex];
var ptRingCount:Number = midRing.length;
var ptRingIndex:int = int((ptRingCount / 2) - 1);
pt=poly.getPoint(ringIndex,ptRingIndex);
break;
}
}
return pt;
}