【问题标题】:debugging google earth pluggin with chrome用 chrome 调试谷歌地球插件
【发布时间】:2014-08-06 00:34:56
【问题描述】:

我正在 Windows 7 上使用 google earth 插件开发一个 Web 应用程序。 我注意到当我将地球对象打印到 chrome 控制台时(用于 deuggin 和代码检查) 对象是空的(看起来像“Object {}”)。经过大量谷歌搜索后我找不到原因..有人可以帮助我吗? 谢谢!

更新:这是我正在运行的代码。我需要帮助,没有调试就无法工作..

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    <div id="map3d" style="height: 100%; width: 100%;"></div>
    <!--nothing inside this -->
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    <script src="https://www.google.com/jsapi"></script>
    <script>
        var ge;

        function init() {
            google.earth.createInstance('map3d', initCB, failureCB);
        };

        function initCB(instance) {
            ge = instance;
            ge.getWindow().setVisibility(true);
            console.log(JSON.stringify(ge, null, 4));
            console.log('0%', ge);
            console.log(ge.parseKml);
        };

        function failureCB(errorCode) {
            throw ("Failed to load earth plugin. Error code = " + errorCode);
        };

        google.load("earth", "1", { "other_params": "sensor={false}" });
        google.setOnLoadCallback(init);
    </script>
</body>
</html>

一切正常,我可以看到地图,但控制台中的结果:

{}
0% Object {}
function parseKml() { [native code] } 

【问题讨论】:

  • 如果控制台返回您"Object {}",则可能它是一个对象。只是它可能以 "String" 的形式返回(所以你无法探索它)它可能真的是一个 Empty 对象......除非您展示/解释更多内容,否则我认为没有人能在这件事上为您提供帮助。
  • 即使我创建了一个硬编码的地标并将其写入控制台,它看起来还是空的,我想有人可能遇到过这个问题。
  • 附注对象代码是%O 而不是0%(它是对象的O,而不是零0) - 也是百分比优先。

标签: javascript google-chrome google-earth google-earth-plugin


【解决方案1】:

您可以先尝试将对象转换为 JSON。例如

console.log(JSON.stringify(obj, null, 4));

或者使用%O 将值的格式强制为可扩展的JavaScript 对象。例如

console.log('%O', obj);

未能输出值而不是对象。例如

console.log(ge.getPluginVersion()); 不是console.log(ge);

编辑

根据您希望看到的代码。正如我在上一个示例中提到的那样,您应该记录您感兴趣的值。例如

console.log(ge.getPluginVersion()); 不是console.log(ge);

您还可以通过调用 getType 来测试运行时 API 对象是什么。例如

console.log(ge.getType()); // GEPlugin

您还可以使用in 测试 API 对象在运行时是否具有属性/方法。例如

console.log('createPlacemark' in ge) // 是的

如果您想知道 API 对象具有哪些属性和方法,可以随时使用Google Earth API Reference 来帮助您,或者您甚至可以在 Visual Studios 对象浏览器之类的工具中打开该对象。

【讨论】:

  • 我很有希望,但它不起作用。即使我尝试打印基本的 ge 对象,它也是空的。还有其他建议吗?
  • 嗯,两者都适合我。你能发布一个你在代码中尝试做什么的清晰示例吗?
  • 贴出了我的代码,请看一下。谢谢!
  • 知道了,但令人失望。当您可以直接在控制台中看到对象的属性和方法时,会更容易,或者观看。还是谢谢!
  • 是的,但是你总是可以在一个对象上调用getType() 方法至少知道它是什么API类型。如果您想要 GEPlugin 对象的所有方法/属性,它们都在这里:developers.google.com/earth/documentation/reference/…。您还可以使用in 在运行时测试 Api 对象上存在的方法/属性,例如if('createPlacemark' in ge) { //... } 等。我已经重新编辑了我的答案以举例说明。
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多