代码之家  ›  专栏  ›  技术社区  ›  Shawn Mclean

无法动态加载Google地图javascript

  •  3
  • Shawn Mclean  · 技术社区  · 16 年前

    下面告诉我GMAP2没有定义。但是使用gmap2的代码在回调中。

            $(function() {
            $('#sample').click(function() {
                $.getScript("http://maps.google.com/maps?file=api&v=2&sensor=true&key=API_KEY_HERE", function() {
                    var map = new GMap2(document.getElementById("mapTest"));
                    map.setCenter(new GLatLng(18, -77.4), 13);
                    map.setUIToDefault();
    
                });
            });
        });
    
    <a id="sample">Click Me</a>
    <div id="mapTest" style="width: 200px; height: 100px;"></div>
    
    2 回复  |  直到 16 年前
        1
  •  4
  •   Doug Neiner    16 年前

    您可以通过以下两种方式:

    1。继续使用 $.getScript :

    看来你需要两个 async=2 参数以及一个不同的回调结构。我的答案与你的代码相适应 great walkthrough here .

    <script type="text/javascript">
        function map_callback(){
            var map = new GMap2(document.getElementById("mapTest"));
            map.setCenter(new GLatLng(18, -77.4), 13);
            map.setUIToDefault();
        }
    
        $(function(){
           $('#sample').click(function(){
              $.getScript("http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;callback=map_callback&amp;async=2&amp;key=API_KEY_HERE");
           }
        }
    </script>
    

    2。使用Google Ajax加载程序

    既然你已经在使用谷歌图书馆,为什么不呢? use their loader 要帮助您:

    <script type="text/javascript" src="http://www.google.com/jsapi?key=ABCDEFG"></script>
    <script type="text/javascript">
       google.load("jquery", "1.3.2");
    
       google.setOnLoadCallback(function(){
           $('#sample').click(function(){
              google.load("maps", "2", {"callback" : function(){
                var map = new GMap2(document.getElementById("mapTest"));
                map.setCenter(new GLatLng(18, -77.4), 13);
                map.setUIToDefault();
              } });
           }
       }, true); // Passing true, though undocumented, is supposed to work like jQuery DOM ready
    </script>
    
        2
  •  1
  •   Sparky    16 年前

    是否检查了浏览器是否兼容?我在所有的gmap应用程序中都这样做,尽管它很少失败…

    if (GBrowserIsCompatible())