我创建了一个Google Map API,我想在新的标签页(Window)中打开它。我可以知道我的代码有什么问题吗?我可以打开一个新标签,但我无法显示Google地图。
以下是我的代码。谢谢!
function newWindow()
{
var myLatlng = new google.maps.LatLng(0.7,40);
var myOptions =
{
zoom: 2,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
<A HREF="" onclick="window.open('javascript:newWindow()')" >New Map(In new window)</A>
答案 0 :(得分:5)
window.open()
将URL作为参数。您的newWindow()
函数不返回任何内容,更不用说URL了。window.open()
,该网址负责设置地图本身。如果您要在线附加事件处理程序,请执行以下操作:
<a onclick="window.open('some_url_here'); return false;">...</a>.
也就是说,为了不引人注目的JavaScript,您应该使用外部JS代码附加JS事件处理程序。
也许您想在模态对话框中打开地图?
答案 1 :(得分:3)
window.open的变量是url
<a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>
答案 2 :(得分:1)
实际上有一个解决方案可以解决您的问题。这里的第一个错误是新窗口中的上下文与旧窗口不同。
var w = window.open('', '_blank', options);
w 是一个与窗口不同的Window对象。空URL创建一个空页“about:blank”,由于没有域,因此您具有对 w.document 的读/写访问权限。 所以像这样:
function newWindowMap(latitude, longitude) {
var w = window.open('', '_blank'); //you must use predefined window name here for IE.
var head = w.document.getElementsByTagName('head')[0];
//Give some information about the map:
w.document.createElement('input');
//Place ID, value and type='hidden' here
var loadScript = w.document.createElement('script');
loadScript.src = '...'; //Link to script that load google maps from hidden elements.
var googleMapScript = w.document.createElement('script');
googleMapScript.src = '...'; //Link to google maps js, use callback=... URL parameter to setup the calling function after google maps load.
head.appendChild(loadScript);
head.appendChild(googleMapScript);
}
现在整个loadScript将在新窗口的上下文中,并且谷歌地图将在完成加载后从中调用函数。您可以动态创建新的 div 并使用它来创建地图。