Открыть карту Google в новом окне. - PullRequest
7 голосов
/ 07 декабря 2010

Я создал API Google Map и хотел бы открыть его в новой вкладке (Окно). Могу ли я узнать, что не так с моим кодом? Я могу открыть новую вкладку, но не могу отобразить карту 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 ]

5 голосов
/ 07 декабря 2010
  1. window.open() принимает URL-адрес в качестве параметра.Ваша newWindow() функция ничего не возвращает, не говоря уже о URL.
  2. Вам нужно позвонить window.open() с переданным действительным URL, который позаботится о настройке самой карты.
  3. Если вы собираетесь прикрепить обработчик событий встроенным, сделайте это правильно:

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

Тем не менее, в интересах ненавязчивого JavaScript, вы действительно должны прикрепить обработчики событий JS, используя ваш внешний код JS.


Возможно, вы хотите вместо этого открыть карту в модальном диалоге?

3 голосов
/ 07 декабря 2010

переменная для window.open - это URL

<a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a>
1 голос
/ 08 сентября 2011

На самом деле есть решение вашей проблемы.Первая ошибка здесь заключается в том, что контекст в новом окне отличается от старого окна.

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 будет в контексте нового окна, и карта Google будет вызывать функцию из него, когда он завершит загрузку.Вы можете динамически создавать новые div и использовать их для создания карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...