Google Maps API v3. Интеграция с Google Планета Земля API

Я использую google-maps-utility-library-v3 для включения представления API Google Планета Земля в реализацию API Карт Google v3. Насколько я могу судить, эти утилиты Google Maps API v3 / Earth API были написаны пользователем jlivni, наличие которого мне очень помогло.

(очень грубый рабочий прототип моей реализации здесь)

У меня проблема в том, что я хочу использовать по умолчанию (при загрузке страницы) представление Google Планета Земля, а не (как в прототипе выше) одно из стандартных представлений Maps API v3.

Я посмотрел строки 81, 131 и 133 (не скомпилированные?) Googleearth.js по вышеуказанной ссылке (в разделе src) и попробовал следующее при настройке параметров API Карт в моем JourneyImmersionInitialiseMapLoadGPXAnimate.js...

var myOptions = {
    zoom: 18,
    center: arr_lat_lon[currentTrk][currentTrkseg][0],
    scaleControl: true,
    tilt: 45,
    mapTypeId: earthMapType,
    overviewMapControl: true,
    overviewMapControlOptions: {
        opened: true
        }
    };

map = new google.maps.Map(document.getElementById("map"), myOptions);

... но получите...

ReferenceError: earthMapType is not defined

Дополнительно я попробовал...

mapTypeId: GoogleEarth.earthMapType,

... что приводит к серому холсту карты без параметров типа карты в правом верхнем углу. После того, как я выбрал вид Земли со страницы, я могу переключаться между стандартными типами карт Earth API на консоли в Firebug, используя...

earth.getInstance().getOptions().setMapType(earth.getInstance().MAP_TYPE_EARTH)

... или же...

earth.getInstance().getOptions().setMapType(earth.getInstance().MAP_TYPE_SKY)

... но опять же, использование earthMapType или GoogleEarth.earthMapType вместо последнего элемента приводит к ошибке в консоли Firebug, на этот раз...

Error: Error calling method on NPObject!

Любая помощь будет принята с благодарностью. заранее спасибо

(поскольку я новичок, я не могу предоставить более двух ссылок в этом посте, но хочу добавить, что я посмотрел на stackru.com/questions/3039250/google-earth-integrated-with-google-maps-api-v3)

1 ответ

Решение

В этой библиотеке нет открытого метода программного переключения, и если вы попытаетесь сделать это до того, как все настройки будут выполнены, произойдет сбой. В идеале должен быть обратный вызов после создания экземпляра вашего объекта GoogleEarth, но при отсутствии такового вы можете обойти проблему, используя закрытый метод showEarth_() на не скомпилированном JS.

Отмечая, что вам нужно подождать произвольное количество времени, прежде чем плагин будет готов, что-то вроде этого, как правило, должно помочь:

googleEarth = new GoogleEarth(map);
setTimeout('googleEarth.showEarth_();',1000);

Это все довольно хакерски, поэтому, пожалуйста, отправьте запрос функции на трекер проблем, чтобы добавить поддерживаемый метод для программного переключения на тип Земли.

Другие вопросы по тегам