Uncaught TypeError: Невозможно установить свойство 'position' из неопределенного - PullRequest
37 голосов
/ 13 декабря 2011

У меня есть этот код, выдающий мне странное сообщение об ошибке

Uncaught TypeError: Cannot set property 'position' of undefined

Это внутренняя часть плагина jQuery для отображения карты Google во всплывающем окне.Я использовал код где-то в другом месте, где он работал нормально - единственное отличие здесь, кажется, в том, что я сейчас использую его во всплывающем окне.Я пропускаю проблему области или что-то?Все переменные, такие как geocoderParams и latlng, заполняются так, как должны.Поиск в сообщении об ошибке ничего полезного не дал.

Сообщение об ошибке выдается при вызове google.maps.Map ().

self = $(this)
self.hide()

geocoder = new google.maps.Geocoder
geocoderParams =
  address: self.data('address') || settings.address
  region: settings.region

results = geocoder.geocode geocoderParams, (results, status) ->

if status == google.maps.GeocoderStatus.OK
  latlng = results[0].geometry.location

  mapOptions =
    mapTypeControl: false
    overviewMapControl: false
    zoom: settings.zoomLevel
    center: latlng
    mapTypeId: google.maps.MapTypeId.ROADMAP

  map = new google.maps.Map(self, mapOptions)

self.show()

Ответы [ 3 ]

66 голосов
/ 13 декабря 2011

Я посмотрел google.maps.Map(), а Справка Google говорит, что первый параметр должен быть mapDiv:Node, который является контейнером для карты и обычно является элементом div.

Вы передаете $(this), который, скорее всего, является объектом jQuery, а не тем, что ожидает Google maps.Я не знаю остальную часть вашего кода, но, возможно, вам следует просто передать this вместо $(this).

31 голосов
/ 01 марта 2012

Если вы используете jQuery, вам нужно передать ванильный HTMLElement (например, Node) вместо выбора jQuery (например, Array / NodeList), который возвращает запрос $().

если вы добавите консольную команду:

console.log(self);

он вернет что-то вроде:

[ ▶ <div id="map_canvas"></div> ]

чтобы получить значение из массива jQuery, замените:

map = new google.maps.Map(self, mapOptions)

с:

map = new google.maps.Map(self[0], mapOptions)
20 голосов
/ 12 июля 2013

Я столкнулся с этой ошибкой при попытке инициировать карту с чем-то вроде этого:

map = new google.maps.Map($('#map-canvas'), mapOptions);

Мне удалось решить эту проблему, выбрав первый (и единственный) элемент, который возвращает селектор, добавив [0] после селектора:

map = new google.maps.Map($('#map-canvas')[0], mapOptions);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...