Ich verwende Leaflet in Kombination mit GeoJSON-Funktionen. Gibt es eine Möglichkeit, GeoJSON-Features (in diesem Fall Polygone) zu kennzeichnen? Es sollte Etiketten von bekommen
feature.properties.name
Dies ist mein Code, in den ich ein Etikett einfügen könnte:
function style(feature) {
return {
weight: 2,
opacity: 1,
color: 'white',
dashArray: '3',
fillOpacity: 0.7,
fillColor: getColor(feature.properties.coloring)
};
}
javascript
web-mapping
labeling
geojson
leaflet
Gegenstrom
quelle
quelle
Antworten:
Sie müssen wissen, welche Formatbroschüre voraussichtlich verwendet wird. RFM. Beispiel: OpenLayers erwartet, dass dieses GeoJSON-Format einen Punkt erstellt und einige benutzerdefinierte Attribute angibt:
Wie Sie sehen können, habe ich eine Geometrie (Punkt) erstellt und meine Attribute damit verknüpft. Wenn ich dies an OpenLayers sende, passt das Ergebnis in das Beispiel von @ Aragon und verwendet "Farbe" und "Name" (als Beschriftung), um den Punkt in der Karte anzupassen.
Bitte kopieren Sie dieses GeoJSON-Beispiel und fügen Sie es in http://json.parser.online.fr/ ein oder verwenden Sie die Website, um zu versuchen, Ihr eigenes zu validieren.
quelle
return feature.properties.color;
Wie Sie sehen können,properties
handelt es sich um einfeature
Attribut undcolor
eines seiner Attribute. Auf diese Weise können Sie alles, was Sie wollen, in dieses Objekt einfügen.RFM
ist völlig unangebracht. Und der Unterschied zwischen einem Punkt und einem Polygon ist signifikant, da es hier genau darum geht, welche Geometrie verwendet werden sollSo habe ich es mit Leaflet-Polygonen und Beschriftungen gelöst, sodass Sie eine schwebende Beschriftung auf dem Polygon mit seiner Namenseigenschaft erhalten.
Annehmen:
Dann:
Bemerkenswerterweise werden die Koordinaten von GeoJson (tatsächlich EPSG: 4326) und Leaflet der Reihe nach vertauscht.
quelle
Ich denke, diese Frage bezieht sich auf openlayers.if, also können Sie für die Kennzeichnung verwenden;
ich hoffe es hilft dir ...
quelle
fillColor: "${color}"
anstatt eine Funktion zu erstellen?