Google maps api v3 DrawingManager нет работы - PullRequest
8 голосов
/ 24 февраля 2012

Я пытаюсь использовать API Карт Google v3, но у меня всегда ошибка

Я добавил скрипт на странице:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=drawing"></script>

и я реализовал:

var drawingManager = new google.maps.drawing.DrawingManager({
      drawingMode: google.maps.drawing.OverlayType.MARKER,
      drawingControl: true,
      drawingControlOptions: {
        position: google.maps.ControlPosition.TOP_CENTER,
        drawingModes: [google.maps.drawing.OverlayType.MARKER, google.maps.drawing.OverlayType.CIRCLE]
      },
      /*markerOptions: {
        icon: new google.maps.MarkerImage('http://www.example.com/icon.png')
      },*/
      circleOptions: {
        fillColor: '#ffff00',
        fillOpacity: 1,
        strokeWeight: 5,
        clickable: false,
        zIndex: 1,
        editable: true
      }

Я всегда получаю одну и ту же ошибку:

Uncaught TypeError: Невозможно прочитать свойство DrawingManager из неопределенного

Ответы [ 7 ]

15 голосов
/ 12 апреля 2013

'Концепции в этом документе относятся к функциям, доступным только в библиотеке google.maps.drawing. Эта библиотека не загружается по умолчанию при загрузке API JavaScript Javascript, но ее необходимо явно указать с помощью параметра начальной загрузки библиотеки: '

http://maps.googleapis.com/maps/api/js?sensor=false&libraries=drawing

9 голосов
/ 27 декабря 2012

Я получил ту же ошибку, и я понял это.Используйте «https» вместо «http» ...

< script type="text/javascript"
 src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=drawing">
</script>
2 голосов
/ 24 июня 2018

используйте это:

<script async defer src="https://maps.googleapis.com/maps/api/js?libraries=geometry,drawing&key=YOURKEY&v=3&callback=initMapfUNCTION"></script>

YOURKEY ==> замените это слово своим ключом API карты initMapfUNCTION ==> заменить это слово именем вашей начальной функции на вашей карте

2 голосов
/ 18 сентября 2017

Кажется, ваш код выполняется до загрузки библиотеки. Если вы загружаете асинхронно, вы должны включить библиотеку в тот же вызов API , который указывает обратный вызов для функции инициализации вашей карты (которая предположительно включает / вызывает ваш фрагмент кода). Если ваша функция инициализации называется initMap, то сделайте это:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY?libraries=drawing&callback=initMap"></script>

Я получил ту же ошибку, имея 2 тега скрипта; один, который загружает библиотеку рисунков (как ваша, без обратного вызова), а другой только с обратным вызовом. Я исправил это после того, как Google любезно написал следующее в моей консоли

You have included the Google Maps API multiple times on this page. This may cause unexpected errors.

0 голосов
/ 26 июня 2018

Так что я не знаю, действительно ли кто-нибудь ответил на это, но вы должны добавить "&libraries=drawing в конец URL, который выглядит как src="https://maps.googleapis.com/maps/api/js?libraries=geometry,drawing&key=YOURKEY&v=3&callback=initMapfUNCTION **ADD HERE** "

0 голосов
/ 06 июня 2013

Попробуйте добавить

});

в конце.

надеюсь, это поможет.

0 голосов
/ 24 февраля 2012

Кроме того, что ваш пример кода не завершен (я полагаю, вы просто пропустили закрывающие скобки, когда копировали его), я не вижу ничего очевидного. Я не использовал библиотеку чертежей, но похоже, что вы правильно следите за документацией. Я бы сказал, используйте Firebug, чтобы проверить, что Javascript загружается из Google, и посмотреть, упоминает ли он что-нибудь о классе DrawingManager.

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