画層数を計算する
画層をリストする
画層を追加する
画層をリンクする
選択されたフィーチャーのキーを取得する
選択されたフィーチャーの座標を取得する
[円で選択]モードを起動する
画層の表示/非表示を切り替える
選択されたフィーチャーを拡大ズームする
マップ フィーチャーの数を計算する
Plug-In および Java Edition 用オブザーバをインストールする
HTML から Java Edition を起動する

画層数を計算する

function countLayers()
{ 
    var map = getMap();
    var layers = map.getMapLayersEx();
    var cnt = layers.size();
    alert(cnt);
}

画層をリストする

function listLayers()
{
    var map = getMap();
    var layers = map.getMapLayersEx();
    var cnt = layers.size();
    var i;
    var msg = "";
    for (i = 0; i<cnt; i++)
    {
        var layer = layers.item(i);
        msg = msg + layer.getName() + "\n";
    }
    alert(msg);
}  

画層を追加する

function doAddLayer()
{
    var map = getMap();
    map.addMapLayer("hydro.mlf", document.obs);
}  

画層をリンクする

Autodesk MapGuide Author を使用して、特定の縮尺に対するマップ画層属性プロパティを設定することができます (『Autodesk MapGuide ユーザ ガイド』の「画層の属性プロパティを指定する」を参照)。 たとえば、ユーザが表示を縮小したときに、画層を非表示にすることができます。 Viewer API を使用すると、画層を複数の制御画層にリンクすることにより、機能を拡張することができます。 表示を縮小すると制御画層が非表示になるような場合、API を使用して、リンクされた画層も一緒に非表示にすることができます。 これを実現するには、この処理を行うコードを onViewChanging イベントに追加します。

function onViewChanging(map)
// States、Countries、ZIP Codes は、制御画層です。
// それらの 1 つが表示されると、他の画層も表示されます。
// それらの 1 つが非表示になると、他の画層も非表示になります。
{
    var states = map.getMapLayer ("States");
    var countries = map.getMapLayer("Countries");
    var zipCodes = map.getMapLayer("ZIP Codes");
    var vis = (states.getVisibility()||counties.getVisibility() || zipCodes.getVisibility());
    var layers = map.getMapLayersEx();
    for (var i=0; i<.size(); i++)
    {
        var layer = layers.item(i);
        if (!layer.equals(states) && !layer.equals(counties) && !layer.equals(zipCodes))
        {
            layer.setVisibility(vis);
        }
    }
} 

選択されたフィーチャーのキーを取得する

この例では、選択されたマップ フィーチャーのキーを表示するダイアログ ボックスを、doGetKey() 関数によって表示します。 フィーチャーが選択されていない場合は、警告が表示されます。

function doGetKey()
{
    var map = getMap();
    if (map.getSelection().getNumObjects() == 0)
    {
        alert ("Make selection first!");
        return;
    }
    var sel = map.getSelection();
    var objs = sel.getMapObjectsEx(null);
    var cntObjects = objs.size();
    var msg = "Keys of selected features are:\n";
    for (i=0;i<cntObjects;i++)
    {
        var obj=objs.item(i);
        var key=obj.getKey();
        msg=msg + obj.getMapLayer().getName() + " " + key + "\n";
    }
    alert(msg);
}

選択されたフィーチャーの座標を取得する

この関数は、選択されたフィーチャーが特定のタイプ(次の例では、区画フィーチャー)の場合に、その座標を取得するコードの例です。

function doGetCoordinates()
{
    var map=getMap();
    // 選択されたオブジェクトを取得します
    var sel=map.getSelection();
    // 区画画層を取得します
    var layer=map.getMapLayer("Parcels");
    if (layer== null)
    {
        alert("No Parcels layer found in this map!");
        return;
    }
    // 1 つの区画のみが選択されているか?
    if ((sel.getNumObjects()> 1) || (sel.getNumObjects() == 0) || (sel.getMapObjectsEx(layer).size() == 0))
    {
        alert("Select only one parcel!");
        return;
    }
    // 区画オブジェクトを取得します
    var obj = sel.getMapObjectsEx(layer).item(0);
    // 頂点のコレクションを取得します
    var vertices = map.createObject("MGCollection");
    var cntVertices = map.createObject("MGCollection");
    var res = obj.getVertices(vertices, cntVertices);
    if (res == 0)
    {
        alert("No access to coordinate information!");
        return;
    }
    // 区画の座標を取得します
    msg = "Parcel:" + obj.getKey() + "\n";
    msg = msg + "Coordinates in MCS unit\n";
    for(var i=0; i<cntVertices.item(0); i++)
    {
        var pnt=vertices.item(i);
        msg=msg + pnt.getX() + "," + pnt.getY() + "\n";
    }
    alert(msg);
}  

[円で選択]モードを起動する

doSelectRadius() 関数は、マップのインスタンスを取得し、そのインスタンスを使用して、selectRadiusMode API メソッドを呼び出します。

function doSelectRadius()
{
    var map = getMap();
    map.selectRadiusMode();
} 

画層の表示/非表示を切り替える

function layerToggle(name)
{
    var map = getMap();
    var layer = map.getMapLayer(name);
    
    if (layer == null)
        alert("layer not found.");
    else
        layer.setVisibility(!layer.getVisibility());
        
    map.refresh();
} 

選択されたフィーチャーを拡大ズームする

function zoomSelected()
{
    var map = getMap();
    var selected = map.getSelection().getMapObjectsEx(null);
    if (selected.size()>0)
        map.zoomSelected();
    else
        alert("nothing selected!");
} 

マップ フィーチャーの数を計算する

function showObjectCount()
{
    if (legendSet)
        return;
    var map = getMap();
    if (!map.isBusy())
    {
        var layers = map.getMapLayersEx();
        var cnt = layers.size();
        var i;
        var msg = "";
        for (i = 0; i<cnt; i++)
        {
            var layer = layers.item(i);
            var objectCount = layer.getMapObjectsEx().size();
            var label = layer.getLegendLabel();
            label = label + " " + objectCount + " features";
            layer.setLegendLabel(label);
        }
    }
    legendSet = true;
}    

Plug-In および Java Edition 用オブザーバをインストールする

この例では、Autodesk MapGuide のバージョンをチェックし、Autodesk MapGuide Viewer Plug-In または Autodesk MapGuide Viewer, Java Edition に対応した適切なイベント オブザーバ アプレットをインストールする方法を示します。 Plug-In/Java Edition Downloads から MGDetectClass.zip ファイルをダウンロードすることができます。

<SCRIPT LANGUAGE="JavaScript">
// 検出アプレットを埋め込んで、Java Edition がインストールされているかどうかを調べます
document.write('<APPLET');
document.write(' CODEBASE="detect_class"');
document.write(' ARCHIVE="MGDetectClass.zip"');
document.write(' CODE=MGDetectClass');

// 検出結果を取得します
tempurl = document.URL;
index = tempurl.indexOf("DETECTED=");
result = tempurl.substring(index, tempurl.length);

if (result == "DETECTED=true")
{
    // Java Edition がインストールされているので、Java Edition のオブザーバ アプレットを埋め込み、
    // その名前を obsJava にします
    document.write("<Applet CODE=\"MapGuideObserver6J.class\" WIDTH=2 HEIGHT=2 NAME=\"obsJava\" MAYSCRIPT>");
    document.write("</Applet>");
	
    // ページをロードしたら、ブラウザから onLoad 関数を自動的に呼び出します 
    // onLoad は MGMap から setSelectionChangedObserver メソッドを呼び出し、Java Edition に
    // 選択変更イベントを処理するオブザーバ オブジェクトを渡します
    function onLoad()
    {
        if (navigator.appName() == "Netscape")
            getMap().setSelectionChangedObserver(document.obsJava);
    }

    function onSelectionChanged(map)
    {
        alert("Selection Changed");
    }
} 

// Java Edition はインストールされていないため、ブラウザが Netscape であるかどうかを確認します
else if (navigator.appName() == "Netscape")
{
    // ブラウザは Netscape なので、Plug-In オブザーバ アプレットを埋め込みます
    document.write("<Java Applet CODE=\"MapGuideObserver6.class\" WIDTH=2 HEIGHT=2 NAME=\"obs\" MAYSCRIPT>");
    document.write("</Java Applet>");
   
    function onLoad()
    {
        if (navigator.appName() == "Netscape")
            getMap().setSelectionChangedObserver(document.obs);
    }
    
    function onSelectionChanged(map)
    {
        alert("Selection Changed");
    }
}
</SCRIPT>

HTML から Java Edition を起動する

次の例では、HTML ページで Autodesk MapGuide Viewer, Java Edition を表示する <APPLET> タグの使用方法を示します。

<HTML>

<HEAD>
<TITLE>MapGuide Java Client Example</TITLE>
</HEAD>

<BODY>

<H2>Simple Invokation of Installed MapGuide Applet</H2>

<APPLET 
    WIDTH=500 
    HEIGHT=300 
    ALIGN="baseline"
    CODE="com/autodesk/mgjava/MGMapApplet.class">
    <PARAM 
        NAME="mwfUrl"
        VALUE="http://www.mapguide.com/maps/usa.mwf">
</APPLET>