6

我想用自定义图像更改谷歌地图聚类。但是,它不会改变我提供的任何东西。这个 initMap 函数是

https://developers.google.com/maps/documentation/javascript/marker-clustering

我试图用谷歌的一些随机图像来改变集群图像。但是,它不渲染任何东西。

集群不支持自定义集群镜像??

function initMap() {

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 3,
          center: {lat: -28.024, lng: 140.887}
        });

        // Create an array of alphabetical characters used to label the markers.
        var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

        // Add some markers to the map.
        // Note: The code uses the JavaScript Array.prototype.map() method to
        // create an array of markers based on a given "locations" array.
        // The map() method here has nothing to do with the Google Maps API.
        var markers = locations.map(function(location, i) {
          return new google.maps.Marker({
            position: location,
            label: labels[i % labels.length]
          });
        });

        // Add a marker clusterer to manage the markers.
        var markerCluster = new MarkerClusterer(map, markers,
            {imagePath: 'http://www.empowervate.org/wp-content/uploads/2015/11/circle.jpg'});
      }

感谢您的帮助@henrisycip

我可以通过提供样式选项来更改集群图像,如下所示。我不确定为什么 imagePath 不做任何事情..

 styles={[
              {
                url: "/static/images/cluster/m1.png",
                height: 53,
                width: 53
              },
              {
                url: "/static/images/cluster/m2.png",
                height: 53,
                width: 53
              },
              {
                url: "/static/images/cluster/m3.png",
                height: 53,
                width: 53
              },
              {
                url: "/static/images/cluster/m4.png",
                height: 53,
                width: 53
              },
              {
                url: "/static/images/cluster/m5.png",
                height: 53,
                width: 53
              }
            ]}
4

3 回答 3

8

加载这些图像有一种特定的方式,这是因为链接到示例代码的 markerclusterer.js 库。

它会查看imagePath您提供的内容,但会对其进行迭代,寻找 image1、image2、image3 等。这就是默认路径https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m有效的原因,因为它将开始寻找 m1.png、m2.png、m3.png 等。

这是图书馆的一部分,它说它正在这样做:

'imagePath': (string) The base URL where the images representing
 *                  clusters will be found. The full URL will be:
 *                  {imagePath}[1-5].{imageExtension}
 *                  Default: '../images/m'.

检查你的控制台,我确定你会得到这样的东西:

获取http://www.empowervate.org/wp-content/uploads/2015/11/circle.jpg1.png 404(未找到)

您需要知道的一切实际上都在文档中。您会看到有下载markerclusterer.js、m1.png、m2.png 等副本的说明,只需将路径更改为您自己的文件夹结构即可。

您的图像路径的一个示例是: imagePath: 'http://www.empowervate.org/wp-content/uploads/2015/11/circle' 如果您有 circle1.png、circle2.png 等。

您也可以检查这个先前的问题:Add custom image to Marker Cluster without overwriting markers

于 2017-09-27T02:36:53.543 回答
2

简单的解决方案可以是附加带有问号的图像 url。

imagePath: '<image_url>?'

另一种解决方案可以设置自定义样式,例如

  new MarkerClusterer(map, marker, {
    styles: [
      {
        url: '<image_url>'
      }
    ]
  })
于 2021-01-05T14:17:25.550 回答
0

作为替代方案,您可以将“&z=”(z 可以是您想要的任何参数名称)附加到图像 URL 的末尾,这样您就可以使用任何您喜欢的图像。

这将防止自动附加的“[1|2|3].png”更改您的 URL。

于 2018-11-26T15:17:21.990 回答