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);
Это все довольно хакерски, поэтому, пожалуйста, отправьте запрос функции на трекер проблем, чтобы добавить поддерживаемый метод для программного переключения на тип Земли.