0

コードビハインドから、内にいくつかのコントロールを追加していますPanel。これらのコントロールの1つはdiv、ユーザーが選択したオプションに従ってデータベースに保存されている場所でJQueryUIマップを使用してGoogleマップをロードする汎用です。それは問題なく動作します。これは私のJavaScript関数です:

function loadLocation(map, latitude, longitude) {
  var location = latitude + ',' + longitude;
  $('div[id=' + map + ']').gmap().bind('init', function (ev, map) {
    $(this).gmap('addMarker', { 'position': location, 'bounds': true }).click(function () { });
    $(this).gmap('option', 'zoom', 4);
    $(this).gmap('option', 'disableDefaultUI', true);
  });
}

Panelさて、ユーザーが選択を変更すると、マップ付きのdivを含め、すべてのコントロールを再度追加するために、最初に上記のすべてのコントロールをクリアします。これはそのための私のvbコードです:

Dim divForMap As New HtmlGenericControl("div")
divForMap .Attributes.Add("style", "float: right; width: 300px; height: 150px;")
containerPanel.Controls.Add(divForMap)

Dim script As String = "loadLocation('" & divForMap.ClientID & "', '" & oSubstation.latitude & "', '" & oSubstation.longitude & "');"
script &= "$(document).ready($('#" & containerPanel.ClientID & "').stop().fadeOut(0).fadeIn(100));"
ScriptManager.RegisterStartupScript(Page, Page.GetType, Guid.NewGuid.ToString, script, True)

ps:(oSubstationは永続ストレージから取得するオブジェクトです)

それが起こっていることです:

問題

  • 1:ユーザーがオプションを選択すると、マップが完全に表示され、指定された場所にマークが表示され、その場所の中央に配置されます。

  • 2:ユーザーがオプションを変更し、場所が変更されましたが、マップのレンダリングに問題があります。

  • 3:ユーザーがブラウザのタブを変更してから戻った場合、地図は適切にレンダリングされますが、マークされた場所の中央に配置されていません。

  • 4:ユーザーは、場所を見つけるために手動で地図を移動する必要があります。

これはChromeで発生しているため、非常に面白いですが(実際にはそうではありません)、IEでは正常に機能します。誰かが解決策、手がかり、提案または魔法のポーションを持っていますか?前もって感謝します。

編集:挿入されたスクリプトをコードビハインドからこれに変更しようとしましたが、まだ機能していません(ps。Chromeのコンソールにエラーや警告が表示されていません):

Dim script As String = "$(document).ready(function() { "
script &= "               loadLocation('" & divForMap.ClientID & "', '" & oSubstation.latitude & "', '" & oSubstation.longitude & "');"
script &= "               $('#" & containerPanel.ClientID & "').stop().fadeOut(0).fadeIn(100);"
script &= "             });"
ScriptManager.RegisterStartupScript(Page, Page.GetType, Guid.NewGuid.ToString, script, True)
4

1 に答える 1

0

さて、今は機能しています。フェードイン効果を実行するために、スタイルdisplay: noneをコンテナに適用しPanelました。このスタイルを削除するだけで、すべて正常に機能するようです。@PragneshPatelに改めて感謝します。誰かの助けになることを願っています。

于 2012-12-11T10:46:40.930 に答える