1

我正在尝试在通过 PageMethod 调用 C# 程序创建的 div 中显示 Google 地图。Pagemethod 返回生成的 html 代码,该代码使用 jquery 命令 $('.showitems').html(somecode); 插入到我的网页中;这段代码包含一个 div,我想在其中放置一个 Google 地图,但是当我执行我的 javascript 来创建一个 Google 地图时,它会用空格而不是地图替换 div。但是,如果我为包含地图的 div 硬编码,则用于创建 Google 地图的 javascript 可以工作。所以我的问题是,为什么我不能使用动态生成的 html 代码创建 Google 地图?下面是我创建谷歌地图的代码,除了动态生成的 div 之外,它已经工作了多年。

function ShowDinerItems(dinerkey) {

            document.getElementById('HiddenDinerID').value = dinerkey;
            var latitude = document.getElementById("Hiddenlat").value;
            var longitude = document.getElementById("Hiddenlng").value;
            location = document.getElementById("LocationText").textContent;

            PageMethods.CallShowDinerItems(dinerkey, latitude, longitude, location, OnShowDinerComplete, OnShowDinerError, dinerkey);
        }

    function OnShowDinerComplete(result, dinerkey) {


              $('.showitems').html(result[0]);
              }

上面列出的showitems区域有一个span区域,点击获取地图如下图:

<span style="cursor:pointer" onclick=\"DisplayDinerMap('40.0912345', '89.12345', `'m0001', 'diner name')\">  Map </span>`

<div id="m0001" style="height:200px; width:200px;display:inline">map</div>

动态生成的 div 映射在 showitems div 中如下所示,其中“m001”是 map1 的 id。

function markDiner(lat, lng, content, map1) {

            map = new google.maps.Map(document.getElementById(map1), {
                zoom: 14,
                center: new google.maps.LatLng(lat, lng),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });
            var marker = new google.maps.Marker({
                position: new google.maps.LatLng(lat, lng),
                map: map,
                animation: google.maps.Animation.DROP,
                title: content
            });

        }

在用户单击地图链接后,我调用 Map 函数。在调试模式下,我可以看到执行通过 Map 例程进行。

 function DisplayDinerMap(lat, lng, map1, dinername) {

            markDiner(lat, lng, dinername, map1);
}

如果 map1 是硬编码的,谷歌地图就可以工作。如果它是通过调用 PageMethod 动态生成的,它不会显示地图,而是在我编写的文字上显示空格,以查看它是否消失。所以在上面的例子中,当我尝试显示地图时,文本“地图”消失了。任何意见或建议表示赞赏。

4

1 回答 1

0

尝试将委托添加到您用来触发事件的跨度。

于 2012-05-22T13:32:19.700 回答