2017-10-04 3 views
1

Ich möchte Markercluster mit benutzerdefinierten individuellen Markern verwenden, indem ich die Leaflet-Plugin-Verschönerungsmarker verwende. Die Markierungen werden basierend auf einer Feature-Eigenschaft namens EncounterType von einem GeoJson angepasst. Bei der Verwendung von L.circleMarker hat die Anpassung funktioniert. Leider funktioniert es nicht mit dem Plugin und ich denke es sollte, da es kein PNG-Format verwendet.Verwendung von L.BeautifyMarkers mit L.MarkerClusters

var brownmarker = { 
     icon: 'paw', 
     iconShape: 'marker', 
     borderColor: '#b3334f', 
     textColor: '#b3334f' 
     }; 

    var redmarker = { 
     icon: 'bullseye', 
     iconShape: 'marker', 
     borderColor: 'Red', 
     textColor: 'Black', 
    }; 

    var bluemarker = { 
     icon: 'camera-retro', 
     iconShape: 'marker', 
     borderColor: 'Blue', 
     textColor: 'Black', 
    }; 

    var Red = L.BeautifyIcon.icon(redmarker); 
    var Blue = L.BeautifyIcon.icon(bluemarker); 
    var Brown = L.BeautifyIcon.icon(brownmarker); 


    var markers = L.markerClusterGroup(); 
    function style(feature){ 
     switch (feature.properties.EncounterType) { 
      case 'Shooting' || 'Hunting': 
      return { 
       Red 
      }; 
      case 'Sighting': 
      return { 
       Blue 
      }; 
      case 'Attack' || 'livestock' || 'Chased' : 
      return { 
       Brown 
      }; 
      default: 
      return { 
       Blue 
      } 
     } 
     } 


    var geoJsonLayer= L.geoJSON(storer, { 
     pointToLayer: function (geoJsonPoint, latlng) { 
     return L.marker(latlng); 
     }, 
      onEachFeature: onEachFeature, 
      icon: style 
     }); 


    markers.addLayer(geoJsonLayer); 
    map.addLayer(markers); 

Wie kann ich diese einzelnen Marker mithilfe dieses Plugins anpassen, während sie in MarkerCluster Form bleiben?

+0

Sie sind Marker gibt es in der Schrift genial und glypicons? Hast du 'iconStyle' benutzt? Mit der Eigenschaft doc: 'html' können Sie Marker erstellen, indem Sie eigenen HTML-Code eingeben. Vielleicht sollten Sie das versuchen – Baptiste

Antwort

1

Es sollte kein Problem bei der Verwendung BeautifyMarker Plugin zusammen mit Leaflet.markercluster Plugin sein.

Sie erstellen nur seltsam Ihre Marke in pointToLayer Option.

Die Option icon ist für L.marker Factory, nicht L.geoJSON.

var geoJsonLayer = L.geoJSON(storer, { 
    pointToLayer: function(geoJsonPoint, latlng) { 
     return L.marker(latlng, { 
     icon: style(geoJsonPoint) 
     }); 
    } 
    /*, 
     onEachFeature: onEachFeature, 
     icon: style*/ 
}); 

Live-Demo: https://jsfiddle.net/rbje8v40/

+0

Okay, das macht Sinn. Aber wenn ich es mit meinem Code versuche, fangen die Cluster an zu glitschern und verschwinden, wenn ich heranzoome. Führe ich eine Art Überladung aus, da ich über 100 Marker habe? –

+0

Schwer zu sagen, ohne es zu sehen. Sie sollten es wahrscheinlich zu einer neuen Frage machen und wenn möglich ein Live-Beispiel teilen, z.B. using bottle, jsfiddle, jsbin, etc. – ghybs

+0

Got it! Es funktionierte an der Sache –