Google Maps JS API(v3)InfoWindow脚本错误 - JSON未定义

Ste*_*yro 8 google-maps infowindow google-maps-api-3 google-maps-markers

我一直在为一两个月做一个很好的计划.我有一个奇怪的问题,点击我的地图上的标记是一个非常模糊的脚本错误.从字面上看,昨晚一切都运转良好,突然之间发生了这种情况.

首先,这里简要介绍一下我的地图.加载此表单(VB)后,将从我的SQL Server数据库中提取记录列表.为每条记录创建具有唯一ID的标记.为每个标记创建一个InfoWindow,InfoWindow中填充了该记录列的详细信息.我认真对待这部分工作完美无瑕.我可以在地图上单击不同的标记,并打开它们的InfoWindow(如果已经打开了InfoWindow,则关闭它).

(很抱歉不得不将这些作为链接发布,我没有10个声望来发布图片). 现在,当我点击一个标记时突然间,我得到以下脚本错误.如果我选择"是",则会显示另一个脚本错误.我无法弄清楚发生了什么.如果我注释掉(有效禁用)标记的click事件,则没有脚本错误,但InfoWindows当然不起作用.我这样做是为了看看脚本错误是否出现了地图只是空转.我已经尝试清除InfoWindow的内容(只留下"测试"作为其内容)来排除; 仍然会得到脚本错误.我不知道这可能是谷歌的结果,我不知道.那可能吗?在第一个脚本错误中指出的URL表明它是该脚本中的一个问题,我认为这表明这可能是他们的结尾?

最后,我的.htm.我应该澄清我在Visual Basic程序中这样做.我在我的表单上有一个容器,我创建并放置一个WebBrowser对象.然后我让WebBrowser加载这个.htm页面.这种情况令人惊讶地发生在一两个晚上,我无法弄清楚问题.我甚至在两周前打开了一个备份,这是行不通的.

<!DOCTYPE html>
<html>
<head><title></title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        html {
            height: 100%;
        }

        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }

        #map_canvas {
            height: 100%;
        }
    </style>

    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"> </script>

    <script type="text/javascript">

        var map;
        var Markers = [];

        function Initialize(zoomLevel, lat, lng, type) {
            //Get the type of map to start.
            //Need to convert the GoogleMapType enum
            //to an actual Google Map Type
            var MapType;
            switch (type) {
                case 1:
                    MapType = google.maps.MapTypeId.ROADMAP;
                    break;
                case 2:
                    MapType = google.maps.MapTypeId.TERRAIN;
                    break;
                case 3:
                    MapType = google.maps.MapTypeId.HYBRID;
                    break;
                case 4:
                    MapType = google.maps.MapTypeId.SATELLITE;
                    break;
                default:
                    MapType = google.maps.MapTypeId.ROADMAP;
            };            

            var myLatlng = new google.maps.LatLng(lat, lng);
            var myOptions = { zoom: zoomLevel, center: myLatlng, mapTypeId: MapType };
            var MarkerSize = new google.maps.Size(48, 48);

            map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
            //google.maps.event.addListener(map, 'click', Map_Click);
            google.maps.event.addListener(map, 'mousemove', Map_MouseMove);
            google.maps.event.addListener(map, 'idle', Map_Idle);

            }

        //function Map_Click(e) {
        //    window.external.Map_Click(e.latLng.lat(), e.latLng.lng());
        //}  

        function Map_MouseMove(e) {
            window.external.Map_MouseMove(e.latLng.lat(), e.latLng.lng());
        }

        function Map_Idle() {
            window.external.Map_Idle();
        }

        function DeleteMarkers() {
            if (Markers) {
                for (i in Markers) {
                    Markers[i].setMap(null);
                    google.maps.event.clearInstanceListeners(Markers[i]);
                    Markers[i] = null;
                }
                Markers.length = 0;
            }
        }

        function LoadMarkers(JobID, CustomerName, PhotoURL, item, lat, lng, description, DateTimeRequested) {
            var MarkerLatLng = new google.maps.LatLng(lat, lng);
            var MarkerOption = { map: map, position: MarkerLatLng, title: name};
            var Marker = new google.maps.Marker(MarkerOption);

            var infowindow = new google.maps.InfoWindow(
                {
                    content: "<font size='3'><b>" + item + "</b></font>" + "<font size='1'><br>Requested: " + DateTimeRequested + " by: " + CustomerName + "</font>"
                        + "<hr width=75% align='left'>"
                        + description + "<br><br><img width='48' align='center' src='myURLHere" + PhotoURL + "'</img>",
                    id: JobID
                });

            google.maps.event.addListener(Marker, 'click', function () {
                typeof infoWindowsOpenCurrently !== 'undefined' && infoWindowsOpenCurrently.close(); //If there is infowwindow currently open, close it
                infowindow.open(map, this); //Open a new one for the selected marker
                infoWindowsOpenCurrently = infowindow; //Set the new info window to the temporary variable
            });
            google.maps.event.addListener(map, 'click', function () { infowindow.close(Marker.get('map'), Marker) && infoWindowsOpenCurrently == infowindow});

            Markers.push(Marker);
            MarkerLatLng = null;
            MarkerOption = null;
        }

        function GetSelectedMarker() {
            typeof infoWindowsOpenCurrently !== 'undefined' && window.external.Get_Selected_Marker(infoWindowsOpenCurrently.id);
        }
   </script>

</head>
<body>
    <div id="map_canvas" style="width: 100%; height: 100%">
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Ale*_*sis 9

我在这里遇到同样的错误.我在WPF WebBrowser中使用谷歌地图JS,3天前运行完美.今天使用相同的源代码我得到了同样的错误.将Google Maps JS的版本设置为3.17(src ="http://maps.google.com/maps/api/js?v=3.17").我这样做了:

<script type="text/javascript"
        src="http://maps.google.com/maps/api/js?v=3.17&sensor=false"/>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看Google文档.