php - 如何将 MarkerClusterer 添加到我的谷歌地图

标签 php mysql maps

我正在尝试将 Google Cluster 添加到我的 map 中,但我不知道该怎么做?我在 php 中使用 mysql 查询创建了 map 及其带有信息框的标记。我知道我正在添加更多标记,它们重叠在一起,所以我需要添加集群命令,但我无法让它工作。我的代码在下面

<script>
$(document).ready(function() {


    //------- Google Maps ---------//

    // Creating a LatLng object containing the coordinate for the center of the map
var latlng = new google.maps.LatLng(53.0,0);

    // Creating an object literal containing the properties we want to pass to the map  
    var options = {  
        zoom: 5, // This number can be set to define the initial zoom level of the map
        center: latlng,
        disableDefaultUI: true,
        panControl: false,
        zoomControl: true,
        scaleControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP, // This value can be set to define the map type ROADMAP/SATELLITE/HYBRID/TERRAIN
            styles: [
  {
    "featureType": "landscape.natural",
    "stylers": [
      { "visibility": "simplified" },
      { "color": "#07c6ee" }
    ]
  },{
    "featureType": "landscape.man_made",
    "stylers": [
      { "visibility": "on" },
      { "hue": "#6e00ff" },
      { "gamma": 1.96 },
      { "lightness": 18 },
      { "saturation": -78 },
      { "color": "#46fcb3" }
    ]
  },{
    "featureType": "water",
    "stylers": [
      { "visibility": "simplified" },
      { "color": "#f9ec55" }
    ]
  },{
  },{
    "featureType": "road.highway",
    "stylers": [
      { "visibility": "on" },
      { "color": "#7b8080" }
    ]
  },{
    "featureType": "road.arterial",
    "stylers": [
      { "visibility": "on" },
      { "color": "#808080" }
    ]
  },{
    "featureType": "road.local",
    "stylers": [
      { "color": "#808080" },
      { "visibility": "on" }
    ]
  },{
    "featureType": "road",
    "elementType": "labels.text.fill",
    "stylers": [
      { "color": "#fefffe" },
      { "visibility": "on" }
    ]
  },{
    "featureType": "landscape.man_made",
    "stylers": [
      { "visibility": "off" }
    ]
  },{
    "featureType": "road.highway",
    "elementType": "labels.icon",
    "stylers": [
      { "visibility": "off" }
    ]
  },{
    "featureType": "poi",
    "stylers": [
      { "visibility": "off" }
    ]
  },{
  }
] 
    };  
    // Calling the constructor, thereby initializing the map  
    var map = new google.maps.Map(document.getElementById('map_div'), options);  

    // Define Marker properties
    var image1 = new google.maps.MarkerImage('http://www.foodhawkers.co.uk/images/map-market.png',
        // This marker is 129 pixels wide by 42 pixels tall.
        new google.maps.Size(40, 40),
        // The origin for this image is 0,0.
        new google.maps.Point(0,0),
        // The anchor for this image is the base of the flagpole at 18,42.
        new google.maps.Point(40, 40)
    );


    //


    // Add Marker



    var marker1 = new google.maps.Marker({
        position: new google.maps.LatLng(51.4636101,-0.1382557), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker1, 'click', function() {  
        infowindow1.open(map, marker1);  
    });

    // Add information window
    var infowindow1 = new google.maps.InfoWindow({  
        content:  createInfo('Venn Street Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/venn-street-market" title="Click to view Venn Street Market" target="_parent">View profile</a>')
    }); 




    var marker2 = new google.maps.Marker({
        position: new google.maps.LatLng(51.5367954,-0.0618898), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker2, 'click', function() {  
        infowindow2.open(map, marker2);  
    });

    // Add information window
    var infowindow2 = new google.maps.InfoWindow({  
        content:  createInfo('Broadway Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/broadway-market" title="Click to view Broadway Market" target="_parent">View profile</a>')
    }); 




    var marker3 = new google.maps.Marker({
        position: new google.maps.LatLng(51.4721386,-2.7580983), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker3, 'click', function() {  
        infowindow3.open(map, marker3);  
    });

    // Add information window
    var infowindow3 = new google.maps.InfoWindow({  
        content:  createInfo('StrEAT Food Market', '<div style="width:200px">We\'re really hoping to be doing some amazing street food nights in the CENTRE of...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/streat-food-market" title="Click to view StrEAT Food Market" target="_parent">View profile</a>')
    }); 




    var marker4 = new google.maps.Marker({
        position: new google.maps.LatLng(51.5945845,-0.1302629), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker4, 'click', function() {  
        infowindow4.open(map, marker4);  
    });

    // Add information window
    var infowindow4 = new google.maps.InfoWindow({  
        content:  createInfo('Alexandra Palace Farmers Market', '<div style="width:200px">Sundays 10:00 - 15:00...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/alexandra-palace-farmers-market" title="Click to view Alexandra Palace Farmers Market" target="_parent">View profile</a>')
    }); 




    var marker5 = new google.maps.Marker({
        position: new google.maps.LatLng(51.5050824,-0.0900808), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker5, 'click', function() {  
        infowindow5.open(map, marker5);  
    });

    // Add information window
    var infowindow5 = new google.maps.InfoWindow({  
        content:  createInfo('Borough Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/borough-market" title="Click to view Borough Market" target="_parent">View profile</a>')
    }); 




    var marker6 = new google.maps.Marker({
        position: new google.maps.LatLng(51.5057757,-0.1168251), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker6, 'click', function() {  
        infowindow6.open(map, marker6);  
    });

    // Add information window
    var infowindow6 = new google.maps.InfoWindow({  
        content:  createInfo('The Real Food Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/the-real-food-market" title="Click to view The Real Food Market" target="_parent">View profile</a>')
    }); 




    var marker7 = new google.maps.Marker({
        position: new google.maps.LatLng(51.5005095,-0.1131232), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker7, 'click', function() {  
        infowindow7.open(map, marker7);  
    });

    // Add information window
    var infowindow7 = new google.maps.InfoWindow({  
        content:  createInfo('Lower Marsh Market', '<div style="width:200px">Lower Marsh is steeped in history as one of London’s oldest and best-loved market streets....</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/lower-marsh-market" title="Click to view Lower Marsh Market" target="_parent">View profile</a>')
    }); 




    var marker8 = new google.maps.Marker({
        position: new google.maps.LatLng(51.4682204,-0.0259369), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker8, 'click', function() {  
        infowindow8.open(map, marker8);  
    });

    // Add information window
    var infowindow8 = new google.maps.InfoWindow({  
        content:  createInfo('Brockley Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/brockley-market" title="Click to view Brockley Market" target="_parent">View profile</a>')
    }); 




    var marker9 = new google.maps.Marker({
        position: new google.maps.LatLng(51.4528397,-0.1019773), 
        map: map,       
        icon: image1 // This path is the custom pin to be shown. Remove this line and the proceeding comma to use default pin
    }); 

    // Add listener for a click on the pin
    google.maps.event.addListener(marker9, 'click', function() {  
        infowindow9.open(map, marker9);  
    });

    // Add information window
    var infowindow9 = new google.maps.InfoWindow({  
        content:  createInfo('Herne Hill Farmers Market', '<div style="width:200px">...</div><br /><br /><a href="http://www.foodhawkers.co.uk/market/herne-hill-farmers-market" title="Click to view Herne Hill Farmers Market" target="_parent">View profile</a>')
    }); 




     var markerCluster = new MarkerClusterer(options, markers);


    // Create information window
    function createInfo(title, content) {
        return '<div class="infowindow"><strong>'+ title +'</strong><br />'+content+'</div>';
    } 

});


</script>

最佳答案

您使用的是哪个版本的 MC?因为版本 2.0.x 具有以下构造语法:

var markerCluster = new MarkerClusterer(map, opt_markers, opt_options);

试试这个:

var markerCluster = new MarkerClusterer(map);
markerCluster.addMarker(marker1);
...
markerCluster.addMarker(marker9);

或者,将您的标记保留在数组中,将其添加到您的代码顶部:

var markers = [];

声明每个标记后将其添加到该数组:

markers.push(markerN);

然后将它们全部添加到集群中:

markerCluster.addMarkers(markers);

关于php - 如何将 MarkerClusterer 添加到我的谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087637/

相关文章:

PHP 如何在 PayPal 购物车中使用 IPN?

mysql - 如何从下到上组织 MySQL 中的表?

python - 如何修复 python 查询和 html 中的分页

r - 在 SpatialPolygonsDataFrame 对象上使用 Rcartogram

linux - 服务器更改允许脚本不起作用。这可能是因为 PHP.ini 不同吗?

php - jQuery 不返回 JSON 数据

php - 要导出的脚本

php - 如何在 MySQL 中将表(以某些后缀结尾)从一个数据库移动到另一个数据库?

javascript - 错误: Invalid value for <image> attribute when passing in variable

r - 由于 NA 已被移除的轮廓多边形边界