您已在此页面上多次添加Google Maps API。这可能会导致意外错误

时间:2012-03-15 11:55:19

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

使用谷歌地图时出现两个错误:

  1. 警告:您已在此页面上多次添加Google Maps API。这可能会导致意外错误。
  2. a为null(main.js)
  3. 我不知道两者之间是否有任何联系,但最终结果是我的页面无法加载地图。

    这是我的头标:

    <script type="text/javascript" src="../s/Jquery/jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="../s/jquery.placeholder.min.js"></script>
    <script type="text/javascript" src="../s/index.js"></script>
    <script type="text/javascript" src="../s/Jquery/ui/jquery.ui.core.js"></script>
    <script type="text/javascript" src="../s/Jquery/ui/jquery.ui.widget.js"></script>
    
    <script type="text/javascript" src="../s/Jquery/ui/jquery.ui.position.js"></script>
    <script type="text/javascript" src="../s/Jquery/ui/jquery.ui.autocomplete.js"></script>
    <script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script><script src="../dd/dealers_js.js" type="text/javascript"></script><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    

    这是我称之为谷歌地图的功能:

    function set_google_map(set_region)
    {
    
            var zoom;
            var center;
            switch (set_region) {
                case "usa":
                    zoom = 3;
                    center = new google.maps.LatLng(37.09, -95.71);
                    break;
                case "europe":
                    zoom = 3;
                    center = new google.maps.LatLng(48.58, 7.71);
                    break;
                case "east":
                    zoom = 3;
                    center = new google.maps.LatLng(31, 121);
                    break;
                default:
                    zoom = 1;
                    center = new google.maps.LatLng(35, 5);
            }
            // Creating the map  
            map = new google.maps.Map(document.getElementById('map'), options);
            google.maps.event.addListener(map, 'click', function(){
                clean_icons();
                if (infowindow) 
                    infowindow.close();
            });
            map.setCenter(center);
            map.setZoom(zoom);
    
    
                //bounds = new google.maps.LatLngBounds();  
    }
    

    这些是我的变数:

    var UseridEncr;
    var super_category="ATE";
    var infowindow;
    var map;
    var bounds;
    var image="../dd/i/green.png";
    var image_active="../dd/i/red.png";
    var mc ;
    var location_changed=true;
    var current_region="usa";
    var mcOptions = {gridSize:30, maxZoom: 8};
    var last_marker;
    var last_marker_z;
    var DealersData ;
    var markers=[];
    var markers_selected=[];
    claster_markers=[];
    var current_view=0;
    myData={};
    var selected_items=[];
    var total_selected=0;
    

    感谢您的快速回答。

5 个答案:

答案 0 :(得分:15)

我遇到了同样的问题。如果您的网页包含映射api 多次,则会发生这种情况。

我已经检查过我的案例中有一个.js文件也在调用 maps api ,所以请先检查一下你是否包含 maps api 更多如果你是,请删除一个。

答案 1 :(得分:4)

这些文件中的任何一个都包含地图API

<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script>
<script src="../dd/dealers_js.js" type="text/javascript">

答案 2 :(得分:1)

我遇到了同样的问题,我终于找到了导致functions.php文件中出现问题的代码。

//自定义脚本和样式//

wp_enqueue_script( 'wpjobus-google-maps-script', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false', array( 'jquery' ), '2013-07-18', true );

我在上面添加了api密钥。 下面的代码是最终结果。

//自定义脚本和样式//     wp_enqueue_script('wpjobus-google-maps-script','https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=MY_API_KEY',array('jquery'),'2013-07-18',true);

然后我删除了我之前添加到具有地图的页面标题的脚本,并且瞧!

答案 3 :(得分:1)

对于那些在运行时将Google Map脚本附加到DOM的用户,您应该删除Google Map的痕迹,然后再重新添加。

您可以按照以下2个步骤卸载Google地图脚本:

  • 从DOM中删除Google地图脚本。
  • 从BOM表(窗口对象)中删除Google。


要实现的JS代码:


declare var window;


function removeGoogleMapScript() {
    console.debug('removing google script...');
    let keywords = ['maps.googleapis'];

    //Remove google from BOM (window object)
    window.google = undefined;

    //Remove google map scripts from DOM
    let scripts = document.head.getElementsByTagName("script");
    for (let i = scripts.length - 1; i >= 0; i--) {
        let scriptSource = scripts[i].getAttribute('src');
        if (scriptSource != null) {
            if (keywords.filter(item => scriptSource.includes(item)).length) {
                scripts[i].remove();
                // scripts[i].parentNode.removeChild(scripts[i]);
            }
        }
    }
}


function addGoogleMapScript() {
    removeGoogleMapScript();
    console.debug('adding google script...');
    let dynamicScripts = [`https://maps.googleapis.com/maps/api/js?v=quarterly&key=123yourApiKey`];
    for (let i = 0; i < dynamicScripts.length; i++) {
        let node = document.createElement('script');
        node.src = dynamicScripts[i];
        node.type = 'text/javascript';
        node.async = false;
        node.charset = 'utf-8';
        node.onload = uponFinishLoadingScript; //probably to initialise your map or something
        document.head.appendChild(node);
    }
}

答案 4 :(得分:0)

您为“选项”定义了什么

map = new google.maps.Map(document.getElementById('map'), **options**);

我没有在变量列表中看到它。

搜索所有位置(假设您尚未制作本地副本)。我相信你可能确实将它添加到dealer_js.js或经销商包含的另一个文件中。

吉姆