【问题标题】:Google Maps Marker Clusterer not showing cluster iconsGoogle Maps Marker Clusterer 不显示集群图标
【发布时间】:2020-11-07 23:42:48
【问题描述】:

我有一个带有一组标记的谷歌地图。我正在尝试将 MarkerClusterer 添加到它以简化视图。总的来说,从我在网上看到的情况来看,这样做应该很容易,但是当我尝试时,我的地图没有显示任何标记、集群或任何东西。我的代码如下:

function calculateCenter() {
            center = map.getCenter()
        }

        let center
        let worldCenter = new window.google.maps.LatLng(32.249974, 5.800781)
        let mapOptions = {
            center: worldCenter,
            zoom: 3,
            scrollwheel: false
        }

        let map = new google.maps.Map(document.querySelector('.banner--map--parks'), mapOptions)
        let infoWindow = new google.maps.InfoWindow()
        let markers = []

        map.addListener('idle', _ => {
            calculateCenter()
        })

        fetch('/api/parks.json')
        .then(response => response.json())
        .then(data => {
            data.forEach(park => {
                if (park.lat && park.lng) {
                    let title = park.name
                    let position = new google.maps.LatLng(park.lat, park.lng)
                    let icon = 'https://raw.githubusercontent.com/Concept211/Google-Maps-Markers/master/images/marker_blue.png'
                    let marker = new google.maps.Marker({
                        position: position
                        title: title,
                        icon: icon,
                        // map: map
                    })

                    let parkIWContent = '<div class="iw"><a href="/parks/' + park.id + '">' + park.name + '</a></div>'

                    marker.addListener('click', (function(marker, parkIWContent) { 
                        return function() {
                            infoWindow.setContent(parkIWContent);
                            infoWindow.open(map, marker);
                            // map.panTo(new google.maps.LatLng(park.lat, park.lng))
                        };
                    })(marker, parkIWContent))

                    markers.push(marker)
                }
            })
        })

        console.log(markers)

        let markerCluster = new MarkerClusterer(map, markers)

        map.addListener("click", _ => {
            infoWindow.close()
        })

如您所见,有一次我确实输出了标记数组,它们都显示在控制台中,但仍然无法在地图上显示。

任何人都可以发现任何可能导致此问题的代码问题吗?

谢谢

【问题讨论】:

  • 您需要提供一个minimal reproducible example 以允许重现问题并包含调试详细信息。你的 javascript 控制台说什么?您如何加载地图和聚类库?地图是否显示?如果您取消注释 // map: map,您会看到标记吗?等
  • @MrUpsidown 我会尝试在 codepen 上举一个例子,但在那之前会有一些答案:是的,如果我取消注释该行,标记会显示。 GMaps 通过脚本标签加载。标记集群通过 NPM 加载 import MarkerClusterer from '@google/markerclustererplus'。是的,地图显示。

标签: google-maps google-maps-api-3 markerclusterer


【解决方案1】:

我实际上已经设法解决了这个问题。我需要在 .then 中移动 Marker Clusterer 才能使其工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2014-12-02
    • 2013-01-25
    • 2015-07-25
    • 2017-11-05
    • 2015-01-24
    相关资源
    最近更新 更多