WordPress: Google Map несколько маркеров меняются по ссылкам боковой панели в аккордеоне

Я использую WordPress с темой Юпитера и визуальным композитором для составления онлайн-плана мероприятий в моем городе.

Нам нужна страница, на которой вы можете в несколько кликов увидеть все места проведения.

То, что я пытаюсь сделать, это иметь аккордеон на левой стороне и карту (карту Google?) На правой стороне.
Аккордеон разделил бы места на категории (театры, музыкальные площадки, выставки и т. Д.). После нажатия, например, «театр», мы увидим названия всех театров внизу и расположение различных маркеров на карте.
Таким образом, маркеры на карте будут меняться и адаптироваться в соответствии с категорией аккордеона, на который мы нажимаем.

Это что-то вроде этого: http://www.xn--bilan-de-comptences-nzb.fr/listing.php?region=aquitaine&Departement = 33&ville_cp = 33000&страница = 1
При нажатии на «suivant», он переходит на другую страницу. Я хочу сделать более или менее то же самое, но на одной странице.

HTML и CSS не проблема, я знаю, как работают php и mysql, но я не эксперт. У меня мало знаний о javascript и jquery.

Спасибо за ваше время и помощь!

-2

Решение

Ранее я разработал подобный код для Карт, и вы можете поиграть и составить таблицы, если вам это нужно.

<div id="map_canvas" style="width:auto;height:500px">

Вы добавляете этот div на страницу или раздел, где вы хотите добавить карту. Используйте элемент HTML VC и измените размеры, как вы хотите **

Создайте файл с именем «Maps.js» и включите следующий код;

Использование сайта http://www.latlong.net/ вы получаете лат & Длинные детали и меняйте информацию о маркерах в зависимости от вашего местоположения. Не забудьте сохранить файл js в папке js в папке установки темы WordPress.

Дайте мне знать, как это происходит!

jQuery(function($) {
// Asynchronously Load the map API
var script = document.createElement('script');
script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize";
document.body.appendChild(script);
});

function initialize() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
mapTypeId: 'roadmap'
};

// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);

// Multiple Markers
var markers = [
['Church Cross' , 6.027207, 80.216655],
['Middle Street', 6.027960, 80.216687],
['Lighthouse Street' , 6.026529, 80.216688]
['Court Square' , 6.027110, 80.219057]
];

// Info Window Content
var infoWindowContent = [
['<div class="info_content">' +
'<b>Church Cross</b><br><br>' +
'<p>No: 9,</p><p>Church Cross St,</p><p>Galle,</p><p>Sri Lanka.</p>' +        '</div>'],
['<div class="info_content">' +
'<b>Middle Street</b><br><br>' +
'<p>No.5, Middle Street,</p><p>Galle,</p><p>Sri Lanka.</p>' +
'</div>'],
['<div class="info_content">' +
'<b>Lighthouse Street</b><br><br>' +
'<p>No.5, Middle Street,</p><p>Galle,</p><p>Sri Lanka.</p>' +
'</div>']
['<div class="info_content">' +
'<b>Court Square</b><br><br>' +
'<p>No.1, Court Square,</p><p>Galle,</p><p>Sri Lanka.</p>' +
'</div>']
];

// Display multiple markers on a map
var infoWindow = new google.maps.InfoWindow(), marker, i;

// Loop through our array of markers & place each one on the map
for( i = 0; i < markers.length; i++ ) {
var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
bounds.extend(position);
marker = new google.maps.Marker({
position: position,
map: map,
title: markers[i][0]
});

// Allow each marker to have an info window
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infoWindow.setContent(infoWindowContent[i][0]);
infoWindow.open(map, marker);
}
})(marker, i));

// Automatically center the map fitting all markers on the screen
map.fitBounds(bounds);
}

// Override our map zoom level once our fitBounds function runs (Make sure it only runs once)
var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {
this.setZoom(17);
google.maps.event.removeListener(boundsListener);
});

}
0

Другие решения

Других решений пока нет …