Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2017, 15:58
Аспирант
Отправить личное сообщение для goooooch Посмотреть профиль Найти все сообщения от goooooch
 
Регистрация: 24.10.2010
Сообщений: 46

Google map API (Uncaught TypeError: b.get is not a function)
Задача:

По клику на ссылки вида a.store-title проверять у них атрибут data-store-id и выводить информационное окно у Маркера, у которого свойство id совпадает с атрибутом ссылки.

Сделал так:

Создал карту
function initMap() {
		        var uluru = {lat: -25.363, lng: 131.044};
		        var map = new google.maps.Map(document.getElementById('map'), {
		          zoom: 4,
		          center: uluru,
		          styles: style
		        });



Создал Маркеры

var markersBounds = new google.maps.LatLngBounds();				

				for (var i = 0; i < markers.length; i++) {

				    var markerPosition = new google.maps.LatLng(markers[i].lat, markers[i].lon);
				 
				    // Добавляем координаты маркера в область
				    markersBounds.extend(markerPosition);				    			
				 
				    // Создаём маркер
				    var marker = new google.maps.Marker({
			          position: {lat: markers[i].lat, lng: markers[i].lon},
			          map: map,
			          title: markers[i].title,
			          icon: '<?=$this->GetFolder()?>/img/marker-icon.png',
			          id: markers[i].id,
			          phone: markers[i].phone,
			          address: markers[i].address,
			          schedule: markers[i].schedule,
			          description: markers[i].description,
			          email: markers[i].email
			        }); 

			        marker.addListener('click', function() {	

			        	console.log(this);

					    map.setCenter(this.getPosition());					    

					    //Всплывашка для клика по Маркеру
					    var contentString = '<b>' + this.title +'</b>' + 
					    	'<br>' + this.description +
					    	//'<br>' + 'Адрес: ' + this.address +				    	
					    	'<br>' + 'Телефон: ' + this.phone +
					    	'<br>' + 'Режим работы: ' + this.schedule;	

					    var infowindow = new google.maps.InfoWindow({
						    content: contentString
						 });

					    infowindow.open(map, this);
					    
					});				

				}				

				// Центрируем и масштабируем карту
				map.setCenter(markersBounds.getCenter(), map.fitBounds(markersBounds));


Пишу нечто, что по моему мнению будет работать, как описано в Задаче:

$('.store-title').click(function(){
					
					var activeStore = $(this).data('store-id');
					
					$.each( markers, function( key, marker ) {
						
						if (marker.id == activeStore) {	
							
							console.log(marker);

							console.log(map);

							//Всплывашка
						    var contentString = '<b>' + marker.title +'</b>' + 
						    	'<br>' + marker.description +
						    	//'<br>' + 'Адрес: ' + this.address +				    	
						    	'<br>' + 'Телефон: ' + marker.phone +
						    	'<br>' + 'Режим работы: ' + marker.schedule;	

						    var infowindow = new google.maps.InfoWindow({
							    content: contentString
							});	
					    
							infowindow.open(map, marker);

							// Центрируем и масштабируем карту
							//map.setCenter(markersBounds.getCenter(), map.fitBounds(markersBounds));
						}
										  	
					});
				});


Возникает ошибка (см. тему топика).

Если заменить в коде infowindow.open(map, marker); на infowindow.open(map);, то ошибки нет, правда информационное окно всплывает не там, где надо, не рядом с маркером.

В чем причина?
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2017, 11:07
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

goooooch,
В скрипте
Сообщение от goooooch
Создал Маркеры
infowindow привязывается к созданному маркеру,
а в скрипте
Сообщение от goooooch
Пишу нечто, что по моему мнению будет работать, как описано в Задаче:
- к элементу исходного массива
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2017, 08:28
Аспирант
Отправить личное сообщение для goooooch Посмотреть профиль Найти все сообщения от goooooch
 
Регистрация: 24.10.2010
Сообщений: 46

Круто. Спасибо!
Три дня смотрел на код, но сам так и не догадался... Слава интернету!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как доступится к свойствам созданной коллекции? assd18 Backbone.js 8 01.12.2013 20:37
эмитировать перемещение google map amigo* Элементы интерфейса 3 18.07.2010 18:24
Google Chart API mycoding Оффтопик 0 14.07.2010 11:22
Google Map - opacity в Opera velo Библиотеки/Тулкиты/Фреймворки 0 30.03.2010 05:37
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12