Помогите пожалуйста разобраться с кодом. У меня есть 2 гугл карты, в каждой карте карте есть input с классом .search, куда я передаю районы. В input первой карты значение передается и сохраняется, но в случае со вторым полем - путаница. В консоль пишет Uncaught TypeError: Cannot read property 'placeholder' of undefined Заметил, что когда выполняется код первой карты, то в консоли видно что элементов .search 3, но когда инициализирую уже вторую карту, их уже 4. Вызов 1 карты
function initMapfirst() {
google.maps.event.addDomListener(window, 'load', initMapfirst);
map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: centerLatLng,
map: map
});
map.mapTypes.set('map_style', styledMap);
map.setMapTypeId('map_style');
google.maps.event.addListener(map, "click", function (e) {
infoBubble.close();
marker.setMap(null);
for (var i = 0; i < all_shops.length; i++) {
var latLng = new google.maps.LatLng(all_shops[i].lat, all_shops[i].lng);
var name = all_shops[i].name;
var tel = all_shops[i].tel;
var social = all_shops[i].social;
var email = all_shops[i].email;
var time = all_shops[i].time;
addMarker(latLng, name, tel, social, email, time);
}
marker = new google.maps.Marker({
position: e.latLng,
map: map
});
all_markers.push(marker);
placeMarker(e.latLng, map, marker);
});
for (var i = 0; i < all_shops.length; i++) {
var latLng = new google.maps.LatLng(all_shops[i].lat, all_shops[i].lng);
var name = all_shops[i].name;
var tel = all_shops[i].tel;
var social = all_shops[i].social;
var email = all_shops[i].email;
var time = all_shops[i].time;
addMarker(latLng, name, tel, social, email, time);
}
function addMarker(latLng, name, tel, social, email, time) {
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: name,
content: tel + social + email + time
});
all_markers.push(marker);
google.maps.event.addListener(marker, "click", function () {
infoBubble.open(map, marker);
});
}
var input = document.getElementById("str");
input.classList.remove('hidden');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
autocomplete.addListener('place_changed', function () {
infoBubble.close();
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
}
// Set the position of the marker using the place ID and location.
marker.setPlace({
placeId: place.place_id,
location: place.geometry.location
});
marker.setPosition(place.geometry.location);
$('#pic_lat').val(place.geometry.location.lat().toFixed(7));
$('#pic_lng').val(place.geometry.location.lng().toFixed(7));
$('.google-search')[0].value = input.value;
infoBubble.open(map, marker);
});
}
Вызов 2 карты:
function initMapsecond() {
google.maps.event.addDomListener(window, 'load', initMapSameDay);
map = new google.maps.Map(document.getElementById("map_two"), mapOptions);
var marker = new google.maps.Marker({
position: centerLatLng,
map: map
});
map.mapTypes.set('map_style', styledMap);
map.setMapTypeId('map_style');
google.maps.event.addListener(map, "click", function (e) {
infoBubble.close();
marker.setMap(null);
for (var i = 0; i < all_shops.length; i++) {
var latLng = new google.maps.LatLng(all_shops[i].lat, all_shops[i].lng);
var name = all_shops[i].name;
var tel = all_shops[i].tel;
var social = all_shops[i].social;
var email = all_shops[i].email;
var time = all_shops[i].time;
addMarker(latLng, name, tel, social, email, time);
}
marker = new google.maps.Marker({
position: e.latLng,
map: map
});
all_markers.push(marker);
placeMarker(e.latLng, map, marker);
});
for (var i = 0; i < all_shops.length; i++) {
var latLng = new google.maps.LatLng(all_shops[i].lat, all_shops[i].lng);
var name = all_shops[i].name;
var tel = all_shops[i].tel;
var social = all_shops[i].social;
var email = all_shops[i].email;
var time = all_shops[i].time;
addMarker(latLng, name, tel, social, email, time);
}
function addMarker(latLng, name, tel, social, email, time) {
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: name,
content: tel + social + email + time
});
all_markers.push(marker);
google.maps.event.addListener(marker, "click", function () {
infoBubble.open(map, marker);
});
}
var input = document.getElementById("str-2");
input.classList.remove('hidden');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
autocomplete.addListener('place_changed', function () {
infoBubble.close();
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
}
// Set the position of the marker using the place ID and location.
marker.setPlace({
placeId: place.place_id,
location: place.geometry.location
});
marker.setPosition(place.geometry.location);
$('#pic_lat').val(place.geometry.location.lat().toFixed(7));
$('#pic_lng').val(place.geometry.location.lng().toFixed(7));
$('.google-search')[2].value = input.value;
infoBubble.open(map, marker);
});
}
Код, где я передаю значение/районы:
$('#districts, #cities').change(function () {
console.log($('.search'));
setTimeout(function () {
$('.google-search')[1].value = $('#districts').find(':selected').data('distr');
$('.google-search')[1].focus();
}, 300);
});
$('#districts-same-day, #cities-same-day').change(function () {
console.log($('.search'));
setTimeout(function () {
if ($('.google-search')[3].placeholder.length > 0) {
$('.google-search')[3].value = $('#districts-same-day').find(':selected').data('distr');
$('.google-search')[3].focus();
}
else {
$('.google-search')[2].value = $('#districts-same-day').find(':selected').data('distr');
$('.google-search')[2].focus();
}
}, 300);
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю сервис со своей логикой но возникают ошибки:
Подключаю библиотеки через один файл посредством того что копирую минифицированый код поочередно в один файл а потом подключаю уже только...
Подскажите, где я ошибся в данном коде? Почему ng-controller отказывается работать? Спасибо заранее
Допустим в представление есть 2 числовых поляВ первое мы вводим значение свойству в модели, а второе поле js сам изменяет по какой-то формуле...