Wordpress:谷歌地图多个标记在手风琴的侧栏链接上更改

时间:2016-04-30 10:39:22

标签: php jquery wordpress google-maps accordion

我正在使用wordpress与jupiter主题和视觉作曲家建立我所在城市的活动在线日程。

我们想要一个页面,您只需点击几下所有场地即可看到该页面。

我要做的是在左手边放一个手风琴,在右手边放一张地图(谷歌地图?)。 手风琴将场地分为不同类别(剧院,音乐场所,展览等)。点击后,例如“剧院”,我们会看到下面所有影院的名称,以及地图上不同的标记位置。 因此,地图上的标记会根据我们点击的手风琴类别进行更改和调整。

有点类似:http://www.xn--bilan-de-comptences-nzb.fr/listing.php?region=aquitaine&departement=33&ville_cp=33000&page=1 点击“suivant”时,它会转到另一页。我想在一个页面上或多或少地做同样的事情。

Html和CSS不是问题,我知道php和mysql是如何工作的,但我不是专家。我对javascript和jquery知之甚少。

感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:0)

我之前为地图开发了类似的代码,如果需要,你可以玩游戏并做表。

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

您可以在要添加地图的页面或部分中添加此div。使用VC html元素并根据需要更改尺寸**

创建一个名为“Maps.js”的文件并包含以下代码;

使用网站http://www.latlong.net/即可获得Lat&amp;详细信息,并根据您的位置更改变量标记信息。记住将js文件保存在WordPress主题安装文件夹的js文件夹中。

让我知道它是怎么回事!

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);
        });

    }