Вы включили Google Maps API несколько раз на этой странице. Это может привести к неожиданным ошибкам - PullRequest
18 голосов
/ 15 марта 2012

Я получаю две ошибки при использовании карты Google:

  1. Предупреждение: вы включили API Google Maps несколько раз на этой странице.Это может привести к непредвиденным ошибкам.
  2. a имеет значение null (main.js)

Я не знаю, существует ли какая-либо связь между ними, но в конечном итоге мойстраница не может загрузить карту.

вот мой главный тег:

<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>

вот функция, которую я называю картой Google:

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 ]

15 голосов
/ 05 октября 2012

Я столкнулся с такой же проблемой.Это происходит, если ваша веб-страница, включающая maps api более одного раза.

В моем случае я проверил, есть ли файл .js, который также вызывает maps api , поэтому, пожалуйста, сначала проверьте, если вы включаете карты API более одного раза, если вы, удалите один.

4 голосов
/ 15 марта 2012

Включает ли какой-либо из этих файлов API карты

<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script>
<script src="../dd/dealers_js.js" type="text/javascript">
1 голос
/ 22 января 2019

Для тех, кто добавляет скрипт Google Map в DOM во время выполнения, вы должны удалить следы Google Map перед повторным добавлением в следующий раз.

Вы можете выгрузить скрипт карты Google, выполнив 2 действия:

  • Удалить скрипты карты Google из DOM.
  • Удалить 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);
    }
}

1 голос
/ 28 февраля 2017

У меня была точно такая же проблема, я наконец нашел код, который вызывал проблему, в файле 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);

Затем я удалил сценарий, который ранее добавил в заголовок страницы с картой, и вуаля!

0 голосов
/ 15 марта 2012

Что вы определили для «опций»

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

Я не вижу его в списке переменных.

Поиск всех местоположений (при условии, что вы не сделали локальную копию). Я полагаю, что вы, вероятно, добавили его в дилеры или другой файл, который включает дилеры

Jim

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...