javascript - 在 ColdFusion 中使用 Google map

标签 javascript google-maps coldfusion

我正在尝试在 ColdFusion 模板中使用 Google Maps API,该模板是边框类型的 cflayoutarea 容器。然而, map 根本没有显示:

<cfif isdefined("url.lat")>
    <cfset lat="#url.lat#">
    <cfset lng="#url.lng#">
</cfif>    
<head>
<script src=                        "http://maps.google.com/maps?file=api&amp;v=2&amp;key=xxxx" type="text/javascript">
        function getMap(lat,lng){       
            if (GBrowserIsCompatible()) {        
                var map = new GMap2(document.getElementById("map_canvas"));
                var pt= new GLatLng(lat,lng);
                map.setCenter(pt, 18,G_HYBRID_MAP);      
                map.addOverlay(new GMarker(pt));
            }    
        }    
</script>
</head>  
<cfoutput>
<body onLoad="getMap(#lat#,#lng#)" onUnload="GUnload()">
    Map:<br>
    <div id="map_canvas" style="width: 500px; height: 300px"/>
</body>
</cfoutput>"

其中 lat 和 lng 是 degree.decimal 格式的坐标。我已经追踪到 GBrowserIsCompatible() 以某种方式永远不会返回 TRUE 的那一行,因此没有采取进一步的行动。

如果单独打开,模板可以完美运行,但当作为 cflayoutarea 容器打开时就不行了。有人有这方面的经验吗?非常感谢任何建议。

劳伦斯

使用 CF 8.01、Dreamweaver 8


试过你的建议但还是不行;该 map 仅在调用代码为内联时显示。但是,如果此容器页面是从另一个 div 调用的,则 map 会再次消失。

我怀疑这个问题与 cflayout 容器有关;我将查找 Extjs 文档,看看是否有解决方案的线索。

最佳答案

成功了! (有点……)

终于让它工作了,但不是按照 Adam 建议的方式:

<script src= "http://maps.google.com/maps?file=api&amp;v=2&amp;key=xxxx" type="text/javascript"></script>
<script type="text/javascript">
    getMap=function(lat,lng){               
        if (GBrowserIsCompatible()){
            var map = new GMap2(document.getElementById("map_canvas"));
            var pt = new GLatLng(lat,lng);
            map.setCenter(pt, 18,G_HYBRID_MAP);      
            map.addOverlay(new GMarker(pt));  
        }    
    }
</script>  

 <cflayout name="testlayout" type="border">
    <cflayoutarea name="left" position="left" size="250"/>
     <cflayoutarea name="center" position="center"> 
            <!--- sample hard-coded co-ordinates --->
        <body onLoad="getMap(22.280161,114.185096)">
        Map:<br />
        <div id="map_canvas" style="width:500px; height: 300px"/>
        </body>
      </cflayoutarea> 
<!---       <cflayoutarea name="center" position="center" source="map_content.cfm?lat=22.280161&lng=114.185096"/> --->
</cflayout> 

整个东西必须包含在同一个文件中,否则它将无法工作。我怀疑 getElementByID 函数,就其本身而言,不能不引用其自身文件之外的元素。如果 div 在另一个文件中(如 Adam 的例子),它会导致未定义的映射,即创建了一个映射对象,但其中没有任何内容。

所以我认为这个问题现在提升到了一个不同的层次:如何引用 ajax 容器中的元素?

关于javascript - 在 ColdFusion 中使用 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80278/

相关文章:

ios - 当前位置在谷歌地图中不起作用

apache-flex - 如何防止窥探者访问 CFC 中的 ="remote"功能?

javascript - jQuery UI 自动完成与外部 JSON 文件

javascript - 如何在 Ionic 中使用 CORS 编写 Angular 2 服务?

javascript - react 原生图像裁剪选择器在平面列表上显示(渲染)图像时出现问题

java - 重构——结合PolygonClickListener和MarkerClickListener

Android Google map 服务导致构建错误

coldfusion - 使用多维菜单填充对象

ruby - 是什么阻止了静态类型语言拥有像 Ruby 的 method_missing 这样的东西?

Javascript 文字与函数 oop