2016-02-25 50 views
0

由于某些原因,Markercluster将组中的标记加倍。例如,当我点击一个组时,我看到四个单独的标记而不是两个。名字也是重复的。我通过其他职位看,但我仍然感到困惑。谢谢!Markercluster加倍标记

<script> 
    var mapData = <?php echo wp_json_encode($mapData); ?>; 
    var map = L.map('map').setView([40, 0], 2); 
    var markers = new L.MarkerClusterGroup(); 

    L.mapbox.accessToken = 'myToken'; 

    var geocoder = L.mapbox.geocoder('mapbox.places'); 

    for (var i = 0; i < mapData.length; i++) 
    { 
    geocoder.query(mapData[i].city, showLoc); 
    } 

    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=myToken', { 
maxZoom: 18, 
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' + 
    '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' + 
    'Imagery © <a href="http://mapbox.com">Mapbox</a>', 
id: 'mapbox.streets' 
    }).addTo(map); 

function showLoc (err, data) { 
    var city = data.results.query.join(' '); 
    for (var i = 0; i < mapData.length; i++) 
{ 

    if (mapData[i].city.toLowerCase() === city) { 
     var marker = L.marker(new L.LatLng(data.latlng[0], data.latlng[1]), { 
         icon: L.mapbox.marker.icon({'marker-color': 'c70c2b'}), 
         title: mapData[i].name 
        }); 
     //new L.Marker([data.latlng[0], data.latlng[1]], 2) 
    marker.bindPopup("<strong>" + mapData[i].name + "</strong>") 

    markers.addLayer(marker); 
} 
} 
markers.addTo(map); 

} 

回答

0

想我想通了。非常简单的修复。必须在我的showLoc (err, data)函数中移动var markers = new L.MarkerClusterGroup();。我认为这与在贴图加载后声明它有关。但不知道。

相关问题