创建标记谷歌地图Api(js,c#)时出现随机“google未定义”错误

时间:2017-05-04 12:27:44

标签: javascript c# google-maps

我正在解析c#中的xml文件,我得到了一些lat / lng。之后,我正在调用一个js函数,在那里我创建了一些标记:

 jsFunc = "createMarker(" + position + "," + HttpUtility.JavaScriptStringEncode(infoStations, true) + ")";
 ScriptManager.RegisterClientScriptBlock(this, GetType(), "script" + cpt, "$(function () {" + jsFunc + "; });", true);

创建标记功能:

 function createMarker(position, information) {
         GreenIcone = {
            url: "http://maps.google.com/mapfiles/marker_green.png",
            size: new google.maps.Size(20, 34),
            anchor: new google.maps.Point(10, 34)
        };
        icone = GreenIcone;
        var marker = new google.maps.Marker({
            position: position,
            map: map,
            icon:icone
        });
        markers.push(marker);

        google.maps.event.addDomListener(marker, "click", function () {

            infowindow = new google.maps.InfoWindow({ content: information });
            if (prev_infowindow) {
                prev_infowindow.close();
            }

            prev_infowindow = infowindow;
            infowindow.open(map, this);


        });
        google.maps.event.addDomListener(map, "click", function () { //supprime l'infobulle affichée au clic sur la map

            infowindow.close();

        });
    }

以下是我所包含的脚本(在js和html之前):

       <script async defer
  src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAHc6798OWr7qKWWzN8CQWRNTw1IysIw_U&libraries=geometry&callback=initMap">

</script>

         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

问题是,对于相同的位置,有时没有标记,有时10等...而且我得到“未捕获的ReferenceError:谷歌未定义” 对于此行缺少的每个标记:

 size: new google.maps.Size(20, 34)

我尝试在html末尾或开头移动谷歌地图api调用,但仍然存在错误。有时所有标记都显示良好且没有错误。对这个问题有什么看法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。该页面有时没有时间完全加载,因此它无法识别谷歌地图API呼叫。我刚刚在代码中添加了&amp;(window).on(&#39; load&#39;,function()):

 function createMarker(position, information) {
        $(window).on('load', function () {
           //my logic here

        });
    }