Ich habe ein Rechteck und muss es mit Quadraten füllen. Ich finde die Mittellinie und möchte die Quadrate entlang dieser Linie platzieren. Aber gibt es eine einfache Methode, ein Quadrat in mapboxgl mit anderen Bibliotheken wie turfjs zu zeichnen? Wie setzen Sie die Mitte des Platzes und eine Seitenlänge und erhalten Sie eine Koordinaten des Platzes? Irgendwelche Ideen? Das Platzieren von Kreisen mit Geojson ist kein Problem, sieht aber für mich mit Quadraten wie ein Problem aus, da ich 4 Koordinaten berechnen muss.Wie platziere man Quadrate entlang der Linie? (Geojson + mapbox)
2
A
Antwort
2
Mit Rasen bekam man das richtige Werkzeug zur Hand, diese Aufgabe zu lösen.
Eine Möglichkeit, es zu tun wäre so etwas wie diese:
Holen Sie sich den Zeilenabstand
Teilen Sie den Zeilenabstand mit der Menge der Rechtecke Sie wollen
Verwenden Rasen. entlang(), um einen Punkt entlang Ihrer Linie zu erhalten
Verwenden Sie torf.buffer, turf.bbox und torf.bboxPolygon, um eine Rechteck auf dem Punkt Standort
alles auf die Karte zeichnen über MapBox-gl-js
Hier ein Codebeispiel ist. Sie können "run code snippet" drücken, um das Ergebnis anzuzeigen.
https://jsfiddle.net/andi_lo/3rc6vca3/
mapboxgl.accessToken = 'pk.eyJ1IjoiZmFyYWRheTIiLCJhIjoiTUVHbDl5OCJ9.buFaqIdaIM3iXr1BOYKpsQ';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v9',
center: [-74.10931699675322, 4.61336863727521],
zoom: 11,
});
map.on('load',() => {
map.addSource('line', {
'type': 'geojson',
'data': {
'type': 'FeatureCollection',
'features': [],
},
});
map.addSource('rect', {
'type': 'geojson',
'data': {
'type': 'FeatureCollection',
'features': [],
},
});
map.addLayer({
id: 'line_layer',
source: 'line',
type: 'line',
paint: {
'line-width': 3,
'line-color': '#333',
},
});
map.addLayer({
id: 'rect_layer',
source: 'rect',
type: 'fill',
paint: {
'fill-color': '#00b7bf',
},
});
const line = turf.lineString([[-74.07, 4.66], [-74.17, 4.56]]);
const lineCollection = turf.featureCollection([line]);
const lineDistance = turf.lineDistance(line);
const rectCollection = turf.featureCollection([]);
const RECT_COUNT = 7;
const RECT_SIZE = 0.6;
const BUFFER_STEPS = 32;
const SEGMENTS = lineDistance/RECT_COUNT;
const UNITS = 'kilometers';
for(let i = 0; i <= RECT_COUNT; i++) {
const point = turf.along(line, (SEGMENTS * i), UNITS);
const buffered = turf.buffer(point, RECT_SIZE, UNITS, BUFFER_STEPS);
const bbox = turf.bbox(buffered);
const bboxPolygon = turf.bboxPolygon(bbox);
rectCollection.features.push(bboxPolygon);
}
map.getSource('line').setData(lineCollection);
map.getSource('rect').setData(rectCollection);
});
#map {
height: 500px;
}
<link href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.css" rel="stylesheet"/>
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js"></script>
<script src="https://npmcdn.com/@turf/[email protected]/turf.min.js"></script>
<div id="map"></div>
Verwandte Themen
- 1. mapbox gl geojson style
- 2. Mapbox GeoJSON in falscher Position
- 3. Wie färbt man Polyline/GeoJSON Linie nach Geschwindigkeit/Höhe in MapBox?
- 4. Abrufen von GeoJson aus MapBox
- 5. Wie konvertiert man GeoJSON in vector.pbf (Protobuf)?
- 6. Große GeoJSON funktioniert nicht mit MapBox GL
- 7. Beschriftung entlang der Linie in GNUPLOT
- 8. Wie man einen SKSpriteNode entlang einer horizontalen Linie bewegt
- 9. Laden von Geojson-Daten in Mapbox
- 10. Shapefile zu GeoJSON Referenz mit Mapbox
- 11. Wie Farbe Linie von Geojson in JavaScript
- 12. Wie zentriert div und überspannt Elemente entlang der gleichen Linie?
- 13. Leaflet.js zeichnen Linie entlang der Flüsse zwischen zwei Punkten
- 14. Wird der Feature-Typ MultiLineString geoJSON von mapbox-gl unterstützt?
- 15. Zeichnen mehrerer GeoJSON-Linien mit Mapbox und Nominatim
- 16. Verwenden Sie einen Farbverlauf für eine Linie mit Mapbox
- 17. Drag & Drop entlang einer diagonalen Linie?
- 18. Wie ändert man das Marker-Bild in der Mapbox?
- 19. nvd3 multiBarChart mit Linie entlang der x-Achse
- 20. Raphael SVG Objekt entlang der geraden horizontalen Linie bewegen
- 21. Zugang GeoJSON Eigenschaft einer Schicht in einem featuregroup in MapBox
- 22. Externe GeoJSON Datei für Mapbox Store Locator holen
- 23. Wie man Kartenstil in mapbox ändert, ohne den geoJson zu ändern
- 24. Fügen Sie geoJSON zu this.map hinzu mapbox-gl-js
- 25. Zeichnen von Polygonen aus GeoJSON in react-mapbox-gl
- 26. Mapbox - Extrudieren von Linien
- 27. Wie ändere ich die Strichbreite entlang eines Pfades/einer Linie?
- 28. MapBox GL JS und GeoJSON als externe Datei
- 29. Wie man den Marker genau entlang der Polylinie bewegt?
- 30. Wie erreicht man bessere Clustering für Indoor-Map auf Mapbox?
Vielen Dank! Das ist toll. Aber was bedeutet das für "const BUFFER_STEPS = 32;" – SERG
Werfen Sie einen Blick auf die Datenbank http://turfjs.org/docs/#buffer. torf.buffer() erstellt einen Kreis mit einem bestimmten Radius. Die Anzahl der Punkte, die verwendet werden, um diesen Kreis zu erstellen, wird durch eine Zahl definiert. Ich habe 32 (Standard ist 64) hier, weil der Kreis selbst nicht wirklich benötigt wird. Vielleicht könntest du sogar weniger verwenden. –