Uncaught TypeError: невозможно установить свойство 'position' из undefined
У меня есть этот код, дающий мне странное сообщение об ошибке
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()
Ответы
Ответ 1
Я посмотрел google.maps.Map()
, а ссылка Google говорит, что первым параметром должен быть mapDiv:Node
, который является контейнером для карты и обычно является элементом div
.
Вы передаете $(this)
, который, скорее всего, является объектом jQuery, который не соответствует ожиданиям Google. Я не знаю остальной части вашего кода, но, возможно, вам нужно просто передать this
вместо $(this)
.
Ответ 2
Если вы используете jQuery, вам нужно передать vanilla 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)
Ответ 3
Я столкнулся с этой ошибкой при попытке инициировать карту с чем-то вроде этого:
map = new google.maps.Map($('#map-canvas'), mapOptions);
Мне удалось решить эту проблему, выбрав первый (и единственный) элемент, который возвращается селектором, добавив [0]
после селектора:
map = new google.maps.Map($('#map-canvas')[0], mapOptions);