0

私の単純なアプリケーションは、画像上に Web リンクを配置します。画像の種類によって、Web リンクの数は異なります。ImageMap コントロールを使用し、ホット スポットの背後にあるコードを追加します。座標と URL はデータベースから取得されます。以下にコードがあります:

protected void ArrangeMapHotSpots(int voivodshipId)
{
    PolygonHotSpot hotSpot = new PolygonHotSpot();
    DataTable ImageMapDT = EzdrojeDB.ImageMapCoordinates(voivodshipId); // get data form DB   
    foreach (DataRow dr in ImageMapDT.Rows)
    {

        hotSpot.HotSpotMode = HotSpotMode.Navigate;
        hotSpot.AlternateText = "alt_text";
        hotSpot.Coordinates = dr["map_coord"].ToString();
        hotSpot.NavigateUrl = "~/resort.aspx?id=" + dr["id"].ToString();
        ImageMap1.HotSpots.Add(hotSpot);
    }
}

問題は、アプリを実行し、アクティブなリンクが 1 つしかない場合です (ただし、この特定の DataTable オブジェクトには 11 行 (リンク) があります)。

以下のHTMLコード:

<img id="ContentPlaceHolder1_ImageMap1" src="Images/VoivodMaps/dolnoslaskie.png" usemap="#ImageMapContentPlaceHolder1_ImageMap1" />

<map name="ImageMapContentPlaceHolder1_ImageMap1" id="ImageMapContentPlaceHolder1_ImageMap1"/>
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" />
</map>

11 個のホット スポットが追加されましたが、それぞれの座標と URL 文字列の ID は同じです。何が起こったのか、プログラムで ImageMap に複数のホットスポットを追加する方法を誰かに説明してもらえますか?

4

1 に答える 1

2

PolygonHotSpot同じオブジェクトを継続的に参照しています。ループの反復ごとに新しいものを作成する必要があります。つまり、関数を次のように置き換えてみてください。

protected void ArrangeMapHotSpots(int voivodshipId)
{
    PolygonHotSpot hotSpot;
    DataTable ImageMapDT = EzdrojeDB.ImageMapCoordinates(voivodshipId); // get data form DB   
    foreach (DataRow dr in ImageMapDT.Rows)
    {
        hotSpot = new PolygonHotSpot();
        hotSpot.HotSpotMode = HotSpotMode.Navigate;
        hotSpot.AlternateText = "alt_text";
        hotSpot.Coordinates = dr["map_coord"].ToString();
        hotSpot.NavigateUrl = "~/resort.aspx?id=" + dr["id"].ToString();
        ImageMap1.HotSpots.Add(hotSpot);
    }
}
于 2010-11-14T00:03:44.350 に答える