コードビハインドから、内にいくつかのコントロールを追加しています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)