javascript - 未捕获的类型错误 : Object #<InfoBox> has no method 'open'

标签 javascript google-maps

这个问题困扰我好久了。我不断收到此错误:

Uncaught TypeError: Object # has no method 'open'

这篇文章中的解决方案也无济于事。 Uncaught TypeError: Object [object Object] has no method 'open' .

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=xxxxxx&sensor=false&callback=initializeMap"></script>

<script type="text/javascript" src="/js/infobox_packed.js"></script>

<script type="text/javascript">

var marker1;

function initializeMap() {
    var latlng = new google.maps.LatLng(22.3113315, 114.188804);
    var myMapOptions = {
        zoom: 11,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myMapOptions);

    marker1 = new google.maps.Marker({
        map: map,
        draggable: false,
        position: new google.maps.LatLng(22.283378, 114.183826),
        visible: true
    });

    var boxText = document.createElement("div");
    boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: white; padding: 5px;";
    boxText.innerHTML = "Need help on moving home.<br>Wan Chai<br>Hong Kong";

    var myOptions = {
        content: boxText,
        disableAutoPan: false,
        maxWidth: 0,
        pixelOffset: new google.maps.Size(-140, 0),
        zIndex: null,
        boxStyle: { 
            background: "url('tipbox.gif') no-repeat",
            opacity: 0.75,
            width: "280px"
        },
        closeBoxMargin: "10px 2px 2px 2px",
        closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
        infoBoxClearance: new google.maps.Size(1, 1),
        isHidden: false,
        pane: "floatPane",
        enableEventPropagation: false
    };

    google.maps.event.addListener(marker1, "click", function (e) {
        ib.open(map, this);
    });

    var ib = new InfoBox(myOptions);
    ib.open(map, marker1);
}
</script>

如果哪位知道如何有什么想法,请指教。提前致谢

最佳答案

这很简单。您正在从一些不支持它的对象调用“open()”。

您在代码中只有两个地方调用“open()”,在第一个地方,您使用了一个未初始化的变量 ib。

也就是说,如果您使用 Chrome 的调试工具,这应该很容易追踪。

关于javascript - 未捕获的类型错误 : Object #<InfoBox> has no method 'open' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451400/

相关文章:

javascript - 如何仅从网格外部访问 Kendo Grid 列菜单并为列标题中的特定列添加筛选选项

javascript - 为什么 JavaScript Math 模块名称不遵循驼峰命名法?

javascript - 直接在对象内部存储、访问和 HTMLElement 对象是否安全,而不是依赖 CSS 选择器?

javascript - 将下拉列表值传递给谷歌地图javascript

javascript - 在 Google map 中验证一个点是陆地还是水域

google-maps - Google Maps Tracks - 跟踪路线

javascript - gmaps.js - 绘制多边形

javascript - 在 Javascript 中如何动态比较和存储值,如 Key 和 value 对象

javascript - React + Google Maps JS API,动态渲染状态标记

android - 在市场上发布应用程序后,MapView 消失了。