如何在 Worklight 上要求 Google 地图地理编码脚本
Posted
技术标签:
【中文标题】如何在 Worklight 上要求 Google 地图地理编码脚本【英文标题】:How to require Google maps Geocoding script on Worklight 【发布时间】:2013-07-03 13:03:07 【问题描述】:我在设置 api 密钥后(我应该生成一个特殊的密钥(浏览器,adnroid)吗??),在一个新的 html 页面中复制一个this page(Google Maps javascript API v3)的 html 代码,并且一切正常.
这是一个有效的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"
);
...
);
);
initialize() 函数:
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" />
视图为空,不显示地图。
浏览器的控制台没有错误,但是函数initialize没有被调用。为什么?
【问题讨论】:
【参考方案1】:使用 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"
【讨论】:
我把这段代码放在哪里?因为我在 dojo init 函数之后插入它并且这个错误:“TypeError:dojo.io is undefined”显示它已被弃用dojotoolkit.org/reference-guide/1.8/dojo/io/script.html dojo.io.script.get 已弃用。我用这个dojotoolkit.org/reference-guide/1.9/dojo/request/… 但不工作! 导入“dojo/request/script”时出错,但我看到这个文件存在 您必须将其添加到 dojo 构建中。找到 build-dojo.properties 。找到模式集标签。添加您还需要您的 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));
【讨论】:
谢谢,脚本“有效”,但我不明白为什么不调用函数初始化。【参考方案3】:我通过在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 问题
【讨论】:
以上是关于如何在 Worklight 上要求 Google 地图地理编码脚本的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight - 如何使用 Google 地图 API
worklight 无法在真实设备上要求 DOJO Combobox - 无法加载... /dijit/form/nls/it/ComboBox.js
Worklight 6.1:是不是有任何服务器调用要求在客户端进行加密缓存