Microsoft JScript运行时错误:属性<map>的值无效:[object Object] </map>

时间:2012-06-07 13:29:03

标签: google-maps google-maps-api-3

当我尝试在我的页面中调用infoBox.open方法时,我收到以下错误。

Microsoft JScript运行时错误:属性值无效:[object Object]

以下是我正在使用的代码。

        var myInfoOptions = {                        
                content: 'Test'//$extradiv.html()
                , closeBoxMargin: "12px 2px 2px 2px"
                , closeBoxURL: '/Images/infowindow-close.gif'
                };

                var ib = new InfoBox(myInfoOptions);
                var info_Marker = new google.maps.Marker({
                    position: new google.maps.LatLng(e.latLng.lat(), e.latLng.lng())
                });
                info_Marker.setMap(null);
                ib.open(map, info_Marker);

我已全局声明了Map对象并按如下方式绑定数据。

   var myOptions = {
            zoom: 5,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

希望快速回应。

谢谢,
Kalyan Basa

1 个答案:

答案 0 :(得分:1)

只是一个猜测:

  1. 您没有在窗口范围内声明变量“map”
  2. 文档中的某个地方是带有 ID “地图”的元素,或带有名称“地图”
  3. 的表单,图片,锚点等

    会发生什么:IE

    问题在于:如果在解析元素之前未声明变量,则无法覆盖对元素的引用。

    更好理解的演示:

    尝试#1:

    <input id="foo" type="button" value="click me to see foo's type-property" onclick="fx()">    
    <script>
    function fx()
    {
       alert(foo.type);
    }
    
    window.onload=function()
    {
       foo={type:'this is the type-property of the foo-variable'};
    }
    </script>
    

    ...在创建变量之前解析输入#foo。创建变量foo的尝试将在IE中失败,因为已存在对全局范围内可访问的输入#foo的引用。警报将返回“按钮”,输入#foo
    的类型 http://jsfiddle.net/doktormolle/kA9nb/

    尝试#2:

    <script>
    var foo;
    
    function fx()
    {
       alert(foo.type);
    }
    
    window.onload=function()
    {
       foo={type:'this is the type-property of the foo-variable'};
    }
    </script>
    <input id="foo" type="button" value="click me to see foo's type-property" onclick="fx()">
    

    如您所见,在解析输入#foo之前,变量foo在全局范围内声明。 IE现在不会创建输入#foo的全局引用,一切都按预期工作:
    http://jsfiddle.net/doktormolle/88QV8/

    所以解决方案:在全局范围内声明变量“map”。