Vairāk

Pielāgota etiķete openlayers 3 funkcijām


Man ir LineString openlayers-3. Es vēlos šai funkcijai iestatīt 2 iezīmi funkcijas sākumā un beigās. Piemērs ir šāds:

Kā es varu izdarīt šīs etiķetes?


Es atrisinu šo jautājumu pats un vēlos dalīties ar citiem.
Vispirms mēs definējam metodi, kas etiķetes pozīcijas aprēķināšanai iegūst divus punktus ar maks. Skatīt attēlu:

Kods ir šāds:

funkcija getLineStylePosition (firstCoor, lastCoor, max) {var deltaX = lastCoor [0] - firstCoor [0]; var deltaY = lastCoor [1] - firstCoor [1]; var rotācija = Math.atan (deltaY/deltaX) * - 1; var nobīdeX = max * Math.cos (rotācija) * (-1); var nobīde Y = max * Math.sin (rotācija) * (-1); var textAlign = 'pareizi'; ja (deltaX <0) {nobīdeX *= -1; nobīdeY *= -1; textAlign = 'pa kreisi'; } return {rotācija: rotācija, textAlign: textAlign, offsetX: offsetX, offsetY: offsetY}; };

Tagad jums ir stila nobīde. Stilu var definēt šādi:

var startTextStyle = jauns ol.style.Text (getLineStylePosition (firstCoor, lastCoor, 15)); startTextStyle.setText ("etiķete 1"); startTextStyle.setFont ("Arial"); startTextStyle.setFill (new ol.style.Fill ({color: 'blue'})); var startStyle = new ol.style.Style ({text: startTextStyle, geometry: new ol.geom.Point (firstCoor)});

Kopējiet šo kodu 2. iezīmei.


Skatīties video: Create Maps with Vector Tiles. OpenLayers. Mapbox GL JS (Septembris 2021).