Я пытаюсь выяснить, как нацелить маркеры карты, чтобы настроить их z-индекс, чтобы они всегда были внизу.Прямо сейчас некоторые прикрывают другие более важные маркеры карты.
Я создал пользовательский тип записи под названием «Местоположения», и я использую расширенные настраиваемые поля, поэтому я не создаю каждое местоположение вручную, поэтому я не могу просто установитьz-индекс в javascript вручную, как показывает большинство решений.
Это то, что я имею до сих пор.Начало кода, которое я получил с веб-сайта acf:
(function ($) {
function new_map($el) {
var $markers = $el.find('.marker');
var args = {
zoom: 14,
center: new google.maps.LatLng(0, 0),
scrollwheel: false,
navigationControl: false,
mapTypeControl: false,
scaleControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
var map = new google.maps.Map($el[0], args);
map.markers = [];
map.infowindows = [];
// add markers
$markers.each(function () {
add_marker($(this), map);
});
center_map(map);
return map;
}
function center_map(map) {
var bounds = new google.maps.LatLngBounds();
$.each(map.markers, function (i, marker) {
var latlng = new google.maps.LatLng(marker.position.lat(), marker.position.lng());
bounds.extend(latlng);
});
if (map.markers.length == 1) {
map.setCenter(bounds.getCenter());
map.setZoom(14);
} else {
map.fitBounds(bounds);
}
}
function add_marker($marker, map) {
var path = '';
if(window.location.hostname == 'localhost'){
path = '/go-dental-365-wordpress-theme';
}
// var
var latlng = new google.maps.LatLng($marker.attr('data-lat'), $marker.attr('data-lng'));
var base = path + '/wp-content/themes/go-dental-365/assets/images/';
// var area = new ($marker.attr('data-area'));
// create marker
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon: base + 'non-active-pin.png',
category: $marker.attr('data-area'),
clickable: false
});
// add to array
map.markers.push(marker);
if(marker.category == 'supported-offices'){
marker.setZIndex(100);
}
// if marker contains HTML, add it to an infoWindow
if ($marker.html()) {
// create info window
var infowindow = new google.maps.InfoWindow({
content: $marker.html()
});
map.infowindows.push(infowindow);
// show info window when marker is clicked
google.maps.event.addListener(marker, 'click', function () {
for (var i = 0; i < map.infowindows.length; i++) {
map.infowindows[i].close();
}
infowindow.open(map, marker);
});
}
// Control Map Pin state
$('.locations-nav-container > div').on('click', function(e){
e.preventDefault();
var nav = $(this).attr('data-nav');
var infowindow;
$('div').removeClass('active');
$(this).addClass('active');
for (var i = 0; i < map.infowindows.length; i++) {
map.infowindows[i].close();
}
for (var j = 0; j < map.markers.length; j++) {
map.markers[j].setIcon(base + 'non-active-pin.png');
map.markers[j].setClickable(false);
if(map.markers[j].category == nav || nav == 'view-all'){
if(map.markers[j].category == 'supported-offices'){
map.markers[j].setIcon(base + 'supporting-pin.png');
} else {
map.markers[j].setIcon(base + 'available-pin.png');
}
map.markers[j].setClickable(true);
}
}
});
}
var map = null;
$(document).ready(function () {
$('.map').each(function () {
map = new_map($(this));
});
$('.locations-nav-container > div:first-child').trigger('click');
});
})(jQuery);
Маркеры карты, имеющие категорию «поддерживаемые офисы», - это те, которые я хочу всегда находиться внизу всех других карт.маркеры.Код работает, когда карта загружается впервые, но как только вы перемещаете карту, маркеры переключаются.По умолчанию я знаю, что Google будет отображать маркеры, которые находятся внизу карты поверх других маркеров, так что это может иметь какое-то отношение к этому.Но как мне переопределить это?
Вот карта, когда она впервые загружена
Вот карта, когда вы ее перемещаете
Булавки с точкой - это те, которые я хочу разместить позади других маркеров.