在新窗口中打开谷歌地图。

时间:2010-12-07 03:46:23

标签: javascript html function google-maps

我创建了一个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>

3 个答案:

答案 0 :(得分:5)

  1. window.open()将URL作为参数。您的newWindow()函数不返回任何内容,更不用说URL了。
  2. 您需要使用传入的有效网址致电window.open(),该网址负责设置地图本身。
  3. 如果您要在线附加事件处理程序,请执行以下操作:

    <a onclick="window.open('some_url_here'); return false;">...</a>.

  4. 也就是说,为了不引人注目的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 并使用它来创建地图。