在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;
??????????? }???????????