-1

我在 ZK 工作,现在我需要使用 Google API 地图。我有时在其他框架中使用过这个 API。我不显示地图。首先,我认为问题可能出在 CSS 上,但事实并非如此。我向窗口的 onLoad 事件添加了一个初始化(映射)函数,但我仍然遇到同样的问题。我使用 js 控制台在浏览器中调试代码,发现窗口事件加载不可用,因此我从 div 的事件加载(其中包含地图)调用函数初始化,js 控制台再次显示相同信息。我使用指令

 <div  id="map_canvas" style="width: 320px; height: 480px;" xmlns:w="http://www.zkoss.org/2005/zk/client" w:onClick="initialize()"></div>

但是没有显示div。最后我用了一个纯html元素,使用ZK的html标签:

<html><![CDATA[
    <div id="map_canvas" onload="initialize()" style="width: 320px; height: 480px;"/>
 ]]></html>

但是js控制台中的结果又是

<div class="noscript"><p>Sorry, JavaScript must be enabled.<br/>Change your browser options, then <a href="">try again</a>.</p></div>

我想知道显示地图的功能不这样做。我认为问题是js,但我不确定,有人告诉我问题是否是调用的js吗?

谢谢。

编辑:

我已经使用这种方式来做到这一点(非常感谢 Sean Connolly:How get the zk element id from js

<zk>
    <script type="text/javascript"
            src="http://maps.googleapis.com/maps/api/js?key=API_KEY&amp;sensor=false">
 </script>

<script type="text/javascript">    
    var map;
    function initialize() {

        var latlng = new google.maps.LatLng(-34.397, 150.644);
        var mapOptions = {
            zoom: 8,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(zk.Widget.$(jq('$map_canvas2')).$n(), mapOptions);
    }      
  google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas2" style="width: 1320px; height: 1480px;" />

4

1 回答 1

-1

我想你想要这样的东西:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var geocoder;
var map;
function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
        zoom: 8,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function codeAddress() {
    var address = document.getElementById("address").value;
    geocoder.geocode({'address': address},
    function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });

           alert(results[0].geometry.location.latlng[0]);



        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}
initialize();
</script>

<div id="map_canvas" style="width: 320px; height: 480px;" onClick="initialize()"></div>
于 2013-08-13T12:22:00.483 回答