1

Я работаю с картой Google, и я написал JS-код, как показано ниже, и он отлично работает, когда пользователь дает разрешение на создание браузера, но когда он блокирует разрешение, карта не показывает ничего и вэнь я нажимаю на своей области, я получаю следующее сообщение об ошибке: \Ошибка Google Map «Неподготовлено TypeError: невозможно прочитать свойство« x »неопределенного»

Erorr:

Uncaught TypeError: не удается прочитать свойство «х» неопределенном

JS SCRIPT:

var pos = new Object(); 
    var marker1 = new Object(); 
    var marker2 = new Object(); 
    var resp; 
    var loc; 
    var bus_loc; 

    function initMap() { 
     var map = new google.maps.Map(document.getElementById('map'), { 
      //  zoom: 13 
     }); 

     var infoWindow = new google.maps.InfoWindow({}); 
     var scope = angular.element($("#address")).scope(); 
     var angLoc; 
     scope.$apply(function() { 
      angLoc = scope.contact.business.location.split(','); 
      bus_loc = { 
       lat: parseFloat(angLoc[0]), 
       lng: parseFloat(angLoc[1]) 
      }; 
     }); 
     var image = '/static/image/main_template/map/2.png'; 
     marker2 = new google.maps.Marker({ 
      map: map, 
      position: bus_loc, 
      icon: image 
     }); 
     marker2.addListener('click', function() { 
      infoWindow.setPosition(bus_loc); 
      infoWindow.setContent('<p style="padding: 0; margin-top: 10px; direction: rtl">ساینا</p>'); 
      infoWindow.open(map, marker2); 
     }); 

     map.setCenter(bus_loc); 
     // Try HTML5 geolocation. 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       pos = { 
        lat: position.coords.latitude, 
        lng: position.coords.longitude 
       }; 

       loc = { 
        lat: parseFloat(pos.lat), 
        lng: parseFloat(pos.lng) 
       }; 
       var image = '/static/image/main_template/map/1.png'; 
       marker1 = new google.maps.Marker({ 
        map: map, 
        position: loc, 
        icon: image 
       }); 
       marker1.addListener('click', function() { 
        infoWindow.setPosition(loc); 
        infoWindow.setContent('<p style="padding: 0; margin-top: 10px; direction: rtl">اینجا هستید</p>'); 
        infoWindow.open(map, marker1); 
       }); 
       map.setCenter(loc); 

       var distanceService = new google.maps.DistanceMatrixService(); 
       distanceService.getDistanceMatrix({ 
         origins: ['' + loc.lat + ',' + loc.lng + ''], 
         destinations: ['' + bus_loc.lat + ',' + bus_loc.lng + ''], 
         travelMode: google.maps.TravelMode.DRIVING, 
         unitSystem: google.maps.UnitSystem.METRIC, 
         durationInTraffic: true, 
         avoidHighways: false, 
         avoidTolls: false 
        }, 
        function(response, status) { 
         if (status !== google.maps.DistanceMatrixStatus.OK) { 
          console.log('Error:', status); 
         } else { 
          resp = response; 
          $('#distance').html('<b>فاصله از شما: <b>' + resp.rows[0].elements[0].distance.text); 
          $('#duration').html('<b>زمان تخمینی رسیدن شما به این با خودرو: <b>' + resp.rows[0].elements[0].duration.text); 

         } 
        }); 



       var bounds = new google.maps.LatLngBounds(); 
       bounds.extend(marker1.getPosition()); 
       bounds.extend(marker2.getPosition()); 

       map.fitBounds(bounds); 


      }, function() { 
       handleLocationError(true, infoWindow, map.getCenter()); 
      }); 
     } else { 
      // Browser doesn't support Geolocation 
      handleLocationError(false, infoWindow, map.getCenter()); 
     } 




    } 

    function handleLocationError(browserHasGeolocation, infoWindow, pos) { 
     // infoWindow.setPosition(pos); 
     // infoWindow.setContent(browserHasGeolocation ? 
     //  'مکان جغرافیایی یافت نشد' : 
     //  'مرورگر شما امکان نشان دادن مکان جغرافیایی را ندارد.'); 
    } 

Что мне делать?

+0

Номер строки ошибки? –

+0

Обычно нет ошибки, но когда я нажимаю на область карты: common.js: 191 Uncaught TypeError: Не удается прочитать свойство 'x' неопределенного – altruistic

+0

Моя первая идея: bus_loc должен быть «новым google.maps.LatLng», а не просто объект, который вы делаете себе с помощью {lat: ..., lng: ...} –

ответ

1

не добавляю prototye наследства, как это, Google Maps рендеринга имеет проблемы с этим

Object.prototype.boolToArray = function() {} 
0

Эта проблема обычно возникает из-за того, что карта div не отображается перед запуском javascript, который должен получить к ней доступ. вы можете найти ответ на этот вопрос question here in this question

+0

Я поставил JS-скрипт в нижней части тела – altruistic

0

У меня была такая же проблема, и в моем случае это было потому, что IE или IIS Server блокировали некоторые URL-адреса Google Maps. Вы можете проверить это, используя инструменты разработчика F12 на вкладке Сеть и загрузить страницу с разрешения и без разрешения. Вероятно, вы нашли URL-адрес Google Maps со статусом 4XX. я решил добавлять карты URL-адрес Google для доверенных сайтов

1

Убедитесь, что вы не перекрывая окна». я "!

Если у вас такая же проблема, когда я поставил точку останова, где ошибка была выброшена в common.js, я увидел, что это проверка window.self и window.self did not = window!

Моя проблема: я создал компонент и написал «self = this» вместо «var self = this». Я перезаписал window.self, который вызвал эту ошибку.

Смежные вопросы