【问题标题】:Open google map in new window.在新窗口中打开谷歌地图。
【发布时间】:2010-12-07 03:46:23
【问题描述】:

我创建了一个谷歌地图 API,我想在一个新的标签(窗口)中打开它。我可以知道我的代码有什么问题吗?我可以打开一个新标签,但我无法显示 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>

【问题讨论】:

    标签: javascript html function google-maps


    【解决方案1】:
    1. window.open() 将 URL 作为参数。您的 newWindow() 函数不会返回任何内容,更不用说 URL。
    2. 您需要使用传入的有效 URL 调用 window.open(),它负责设置地图本身。
    3. 如果您要内联附加事件处理程序,请正确执行:

      &lt;a onclick="window.open('some_url_here'); return false;"&gt;...&lt;/a&gt;.

    也就是说,为了不显眼的 JavaScript,您应该使用您的外部 JS 代码真正附加 JS 事件处理程序。


    也许您想改为在模式对话框中打开地图?

    【讨论】:

    • 哦,好的,谢谢!以前我遇到过一个类似 onclick="window.open('javascript:function()'); 的网站,这就是为什么我认为我可以在 window.open 中执行功能。感谢您为我解决。跨度>
    • @KennC:这只是因为该函数返回了一个 URL。另外,我确定您不是指 onclick="window.open('javascript:function()');,因为 function 是 JS 中的关键字 :) ... ,您在编写 onclick="/* js context here */" 时已经处于 JS 上下文中,所以在里面写javascript:function()实际上是一个语法错误。
    • 哦,我明白了。是的,我不是指功能这个词。 =) 再次感谢
    【解决方案2】:

    window.open 的变量是 url

    <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>
    

    【讨论】:

      【解决方案3】:

      您的问题实际上有一个解决方案。这里的第一个错误是新窗口中的上下文与旧窗口不同。

      var w = window.open('', '_blank', options);
      

      w 是一个不同于 window 的 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 并使用它来创建地图。

      【讨论】:

        猜你喜欢
        • 2016-08-29
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 2015-11-07
        相关资源
        最近更新 更多