ESRI マップビューア現在表示範囲の座標を変数として取得

ESRI マップの現在表示範囲をマップパラメータとして取得し、そのパラメータを後からマップレイヤやレポートのフィルタ設定に使用することができます。この表示範囲は、任意の座標系の座標として取得できますが、単純なポリゴンである必要があります。

マップ表示範囲変数の名前は次のとおりです。

  • &MINX - 表示範囲の最小経度を定義します。
  • &MINY - 表示範囲の最小緯度を定義します。
  • &MAXX - 表示範囲の最大経度を定義します。
  • &MAXY - 表示範囲の最大緯度を定義します。

マップでの現在表示範囲パラメータの使用

次の手順に従ってマップを作成し、マップが更新された際に現在の表示範囲内にマーカーを表示するプロシジャを使用します。

  1. 「RetailExtent」の名前でワークスペースを作成します。
  2. ワークスペースを右クリックし、[新規作成]、[プロシジャ] を順に選択します。
  3. 次のプロシジャをコピーし、テキストエディタに貼り付けて、「retail_map.fex」という名前で保存します。
    -DEFAULT &MINX=_FOC_NULL
    -DEFAULT &MAXX=_FOC_NULL
    -DEFAULT &MINY=_FOC_NULL
    -DEFAULT &MAXY=_FOC_NULL
    
    DEFINE FILE WF_RETAIL_LITE
    LATITUDE = STATE_PROV_CAPITAL_LATITUDE;
    LONGITUDE = STATE_PROV_CAPITAL_LONGITUDE;
    END
    TABLE FILE WF_RETAIL_LITE
    PRINT
         ID_CUSTOMER
         QUANTITY_SOLD
         MSRP_US
         FST.LATITUDE
         FST.LONGITUDE
    
    WHERE RECORDLIMIT EQ 250
    WHERE COUNTRY_NAME EQ 'United States'
    WHERE LATITUDE GE &MINY
    WHERE LATITUDE LE &MAXY
    WHERE LONGITUDE GE &MINX
    WHERE LONGITUDE LE &MAXX
    ON TABLE SET PAGE-NUM NOLEAD
    ON TABLE SET ASNAMES ON
    ON TABLE NOTOTAL
    ON TABLE PCHOLD FORMAT XML
    ON TABLE SET HTMLEMBEDIMG ON
    ON TABLE SET HTMLCSS ON
    
    END
    

    このプロシジャには、現在表示されている範囲のマーカーのみを表示するための WHERE 条件が含まれています。

  4. 下図のように、HTML ページを新規作成し、マップオブジェクトおよびボタンを追加します。

  5. [リクエストとデータソース] パネルで、[新規作成] ボタン横のドロップダウンリストをクリックし、[外部リクエスト]、[WebFOCUS プロシジャ] を順に選択します。[retail_map.fex] を選択します。
  6. マップを選択し、[設定] パネルを下図のように構成します。

  7. [リクエストとデータソース] パネルで、[retail_map] リクエストを右クリックし、[パラメータコントロールの作成] を選択します。

    [新規パラメータ] ダイアログボックスが表示されます。

  8. [コントロールタイプ] 列の先頭行の値を右クリックし、[既存コントロール]、[emfobject1] を順に選択します。

    [新規パラメータ] ダイアログボックスで emfobject1 をパラメータコントロールとして設定

    パラメータを既存コントロールとして作成する [新規パラメータ] ダイアログボックス

  9. [OK] をクリックします。
  10. ボタンを選択して [タスクとアニメーション] パネルを開き、下図のように、ボタンがクリックされた際にマップを更新するタスクを作成します。

  11. HTML ページを保存します。

ページを実行すると、下図のように、すべてのマーカーがマップ上に表示されます。

ズームインした後、ボタンをクリックします。下図のように、マップが更新され、その範囲のマーカーのみが表示されます。