Google maps api 3 Firefox插件中的谷歌地图(不含SDK)

Google maps api 3 Firefox插件中的谷歌地图(不含SDK),google-maps-api-3,firefox-addon,Google Maps Api 3,Firefox Addon,我需要在我的adddon中添加一个地图,我知道如何在“公共网页”中完成我需要的操作,就像我在这里所做的那样: 问题是我真的不知道如何在Firefox插件中实现同样的功能。我尝试用导入脚本,还尝试用下一行添加chrome html: <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 你能帮我吗?我正在开发一个“Firefox for Androi

我需要在我的adddon中添加一个地图,我知道如何在“公共网页”中完成我需要的操作,就像我在这里所做的那样:

问题是我真的不知道如何在Firefox插件中实现同样的功能。我尝试用导入脚本,还尝试用下一行添加chrome html:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
你能帮我吗?我正在开发一个“Firefox for Android”插件,这就是为什么我需要做像*window.content.*document.createElement这样的事情,因为文档没有声明,只有window,我认为这可能是问题所在。。。但是,如果我不知道谷歌地图使用什么,我就不能宣布一切


补充:我还了解到GoogleMapsAPI团队有特定的代码,禁止您在本地复制主脚本。特别是,该代码每隔这么多小时“过期”。我是这个脚本的一部分:因为我不能直接执行它(错误:对不实现接口HTMLDocument的对象调用write)。所以我别无选择

使用
iframe
(如果在XUL中,则类型=内容)来显示web内容。在那里,您可以包含任何您喜欢的脚本。
iframe
中的内容将没有任何特权,或者至少不应该有任何特权。如果您需要与代码的特权加载项部分通信,您可以使用常规HTML事件(
createEvent
addEventListener
和friends)或
postMessage
web API来传递消息

不要试图将远程代码直接加载到其他页面,或者更糟的是,加载到浏览器中,因为这是兼容性和安全性的噩梦。 由于加载远程代码和/或代码未经过适当审查,无法在特权上下文中运行,平台将拒绝通过loadSubScript等从远程源(http等)加载此类脚本

应该注意的是,如果您以后想在addons.mozilla.org上托管您的加载项,并且仍然在特权代码中包含远程脚本,那么您的加载项将被拒绝,直到您修复它为止。
此外,如果发现您的加载项中存在已知的安全漏洞,mozilla可能会阻止您的加载项,即使您在其他地方托管。请使用
iframe
(如果在XUL中,则类型=内容)来显示web内容。在那里,您可以包含任何您喜欢的脚本。
iframe
中的内容将没有任何特权,或者至少不应该有任何特权。如果您需要与代码的特权加载项部分通信,您可以使用常规HTML事件(
createEvent
addEventListener
和friends)或
postMessage
web API来传递消息

不要试图将远程代码直接加载到其他页面,或者更糟的是,加载到浏览器中,因为这是兼容性和安全性的噩梦。 由于加载远程代码和/或代码未经过适当审查,无法在特权上下文中运行,平台将拒绝通过loadSubScript等从远程源(http等)加载此类脚本

应该注意的是,如果您以后想在addons.mozilla.org上托管您的加载项,并且仍然在特权代码中包含远程脚本,那么您的加载项将被拒绝,直到您修复它为止。
此外,如果发现您的加载项中存在已知的安全漏洞,mozilla可能会将您的加载项列为块列表,即使您在其他地方托管。

您使用的是canvas元素,而不是div,但canvas不是为包含HTML内容而设计的(通常,当浏览器不支持canvas元素时,浏览器只会在画布中显示HTML内容)@Dr.Molle我也尝试使用div元素,但不起作用:(您使用的是canvas元素,而不是div,但画布不是为包含HTML内容而设计的(通常,当浏览器不支持canvas元素时,浏览器仅在画布中显示HTML内容)@Dr.Molle我也尝试使用div元素,但不起作用:(
Components.utils.import("resource://gre/modules/Services.jsm");

window.google = {};
window.google.maps = {};
window.google.maps.modules = {};
var modules = window.google.maps.modules;
var loadScriptTime = (new window.Date).getTime();

window.google.maps.__gjsload__ = function(name, text) { modules[name] = text;};
window.google.maps.Load = function(apiLoad) {
    delete window.google.maps.Load;
    apiLoad([0.009999999776482582,[[["https://mts0.googleapis.com/vt?lyrs=m@227000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.googleapis.com/vt?lyrs=m@227000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@227000000"],[["https://khms0.googleapis.com/kh?v=134\u0026hl=en-US\u0026","https://khms1.googleapis.com/kh?v=134\u0026hl=en-US\u0026"],null,null,null,1,"134"],[["https://mts0.googleapis.com/vt?lyrs=h@227000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.googleapis.com/vt?lyrs=h@227000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"h@227000000"],[["https://mts0.googleapis.com/vt?lyrs=t@131,r@227000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.googleapis.com/vt?lyrs=t@131,r@227000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@131,r@227000000"],null,null,[["https://cbks0.googleapis.com/cbk?","https://cbks1.googleapis.com/cbk?"]],[["https://khms0.googleapis.com/kh?v=80\u0026hl=en-US\u0026","https://khms1.googleapis.com/kh?v=80\u0026hl=en-US\u0026"],null,null,null,null,"80"],[["https://mts0.googleapis.com/mapslt?hl=en-US\u0026","https://mts1.googleapis.com/mapslt?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=en-US\u0026","https://mts1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["https://mts0.googleapis.com/vt?hl=en-US\u0026","https://mts1.googleapis.com/vt?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt/loom?hl=en-US\u0026","https://mts1.googleapis.com/mapslt/loom?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt?hl=en-US\u0026","https://mts1.googleapis.com/mapslt?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=en-US\u0026","https://mts1.googleapis.com/mapslt/ft?hl=en-US\u0026"]]],["en-US","US",null,0,null,null,"https://maps.gstatic.com/mapfiles/","https://csi.gstatic.com","https://maps.googleapis.com","https://maps.googleapis.com"],["https://maps.gstatic.com/intl/en_us/mapfiles/api-3/13/11","3.13.11"],[3047554353],1.0,null,null,null,null,1,"",null,null,1,"https://khms.googleapis.com/mz?v=134\u0026",null,"https://earthbuilder.googleapis.com","https://earthbuilder.googleapis.com",null,"https://mts.googleapis.com/vt/icon"], loadScriptTime);
};


//I can't use document.write but use loadSubScript insthead
Services.scriptloader.loadSubScript("chrome://googleMaps/content/Google-Maps-V3.js", window, "utf8"); //chrome://MoWA/content/Google-Maps-V3.js", window, "utf8");

var mapContainer = window.content.document.createElement('canvas');
    mapContainer.setAttribute('id', "map");
    mapContainer.setAttribute('style',"width: 500px; height: 300px");
    mapContainer.style.backgroundColor = "red";

var mapOptions = {
    center: new window.google.maps.LatLng(latitude, longitude),
    zoom: 5,
    mapTypeId: window.google.maps.MapTypeId.ROADMAP
}

var map = new window.google.maps.Map(mapContainer,mapOptions);
return mapContainer;