マップ、ポイントのデータベース、および検索ツールを備えた Flex 4 のアプリケーションがあります。ユーザーが何かを入力して検索すると、データベース内のオブジェクトの名前、詳細、および座標が返されます。
検索結果の 1 つをクリックすると、マップの選択したポイントをズームする機能があります。
問題は、すべての結果ポイントを一度にズームする機能が欲しいということです。たとえば、「背の高い木」を検索して 10 ポイントが返された場合、一度に 10 ポイントを表示できる位置にマップをズームしたいと考えています。
以下は、一度に1つのポイントをズームするために使用するコードです。フレックスには「ポイントのグループにズームする」何らかの機能があると思いましたが、このようなものは見つかりません。
private function ResultDG_Click(event:ListEvent):void
{
if (event.rowIndex < 0) return;
var obj:Object = ResultDG.selectedItem;
if (lastIdentifyResultGraphic != null)
{
graphicsLayer.remove(lastIdentifyResultGraphic);
}
if (obj != null)
{
lastIdentifyResultGraphic = obj.graphic as Graphic;
switch (lastIdentifyResultGraphic.geometry.type)
{
case Geometry.MAPPOINT:
lastIdentifyResultGraphic.symbol = objPointSymbol
_map.extent = new Extent((lastIdentifyResultGraphic.geometry as MapPoint).x-0.05,(lastIdentifyResultGraphic.geometry as MapPoint).y-0.05,(lastIdentifyResultGraphic.geometry as MapPoint).x+0.05,(lastIdentifyResultGraphic.geometry as MapPoint).y+0.05,new SpatialReference(29101)).expand(0.001);
break;
case Geometry.POLYLINE:
lastIdentifyResultGraphic.symbol = objPolyLineSymbol;
_map.extent = lastIdentifyResultGraphic.geometry.extent.expand(0.001);
break;
case Geometry.POLYGON:
lastIdentifyResultGraphic.symbol = objPolygonSymbol;
_map.extent = lastIdentifyResultGraphic.geometry.extent.expand(0.001);
break;
}
graphicsLayer.add(lastIdentifyResultGraphic);
}
}