1

我在设置 api 密钥后(我应该生成一个特殊的密钥(浏览器,adnroid)吗??),在一个新的 html 页面中复制此页面的 html 代码(Google Maps JavaScript API v3),并且一切正常。

这是一个有效的html页面脚本:

 <script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCo1Q9VJ...xr7R4aOBDzY&sensor=false">
    </script>

在使用 Dojo 的 Worklight 项目中,地图不显示。

我使用dojo/request/script导入脚本。这是 .js 代码:

     function dojoInit() {
            require([ "dojo",  "dojo/request/script","dojo/parser",

                   ..

                  ], function(dojo,script) {
    dojo.ready(script,function() {


                script.get({
                    url : "http://maps.googleapis.com/maps/api/js",
                    content : {
                        libraries : "places, geocode",
                        sensor : "false",
                        callback : "initialize",
                        key: "AIzaSyCo1Q9....cqXhAxr7R4aOBDzY"
                    }
                 });
    ...
            });
        });

    }

初始化()函数:

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);
}   

构建-dojo.xml

..
<include name="dojo/request/script.js" /> 

视图为空且不显示地图。

浏览器的控制台上没有错误,但函数初始化没有被调用。为什么?

4

3 回答 3

2

使用 dojo io load 确保在运行其余代码之前加载了 google api。

dojo.io.script.get({
            url : "http://maps.googleapis.com/maps/api/js",
            content : {
                libraries : "places, geocode",
                sensor : "false",
                callback : "initialize",
                key: "AIzaSyCo1Q9VJDuH96CqqW8cqXhAxr7R4aOBDzY"

            }
于 2013-07-03T14:53:50.417 回答
1

您还需要您的 require 回调函数来正确映射您的 require 数组参数。在这里,您似乎导入了多个模块,但您的 require 回调只有 2 个参数。

如果你这样做

require(["a", "b", "c", "dojo/require/script"], ...)

该功能应该是

function(a, b, c, script)而不仅仅是function(a, script)

如果你不关心 b & c 你可能会这样做:

require(["a", "dojo/require/script", "b", "c"], function(a, script){});
于 2013-07-11T11:35:42.690 回答
1

我通过在 html 中导入脚本来解决它

    <script type="text/javascript"
          src="https://maps.googleapis.com/maps/api/js?key=AIzaS..OBDzY&sensor=false">
        </script> 
<div dojoType="dojox.mobile.ContentPane"  style="overflow:auto;">

        <div id="map_canvas" style="height:1000px"></div><!--  cambiare style  -->

    </div>

并在 dojo_init() 中调用函数 initialize()。地图也显示了在此处输入图像描述 我认为这是一个 CSS 问题

于 2013-07-16T14:00:17.800 回答