Daudzstūri ir lielisks veids, kā kartē attēlot aptuveno zemes platību, un bieži vien ir noderīgi zināt jūsu definētā daudzstūra laukumu. Tas ir iespējams OpenLayers 3; spēcīgs JavaScript kartēšanas rīks.
Šis raksts palīdzēs jums pievienot daudzstūri un pēc tam aprēķināt laukumu, izmantojot sfēru.
Lūdzu, ņemiet vērā, ka, lai izpildītu šo rakstu, tīmekļa lapā ir jābūt instalētai strādājošai OpenLayers kartei. Ja jums tādas nav, kā izveidot karti, izmantojot OpenLayers 3.
Soļi
1. solis. Izveidojiet daudzstūra līdzekli
Daudzstūra konstruktora funkcijai nepieciešams koordinātu masīvu masīvs; vispirms definējiet šo masīvu mainīgā, lai to varētu izmantot vēlāk. Vienkārši nokopējiet šādu koda rindiņu savā
elements:
var koordinātas =
2. solis. Pievienojiet līdzekli vektoru slānim
Lai kartē pievienotu daudzstūri, tas jāpievieno avotam, ko pievienojat vektoru slānim, kuru pēc tam varat pievienot kartei:
var vector_layer = new ol.layer. Vector ({avots: new ol.source. Vector ({features: [polygon_feature]})}}) map.addLayer (vector_layer);
3. solis. Pārveidojiet objekta ģeometriju, lai izmantotu koordinātas
var current_projection = new ol.proj. Projection ({kods: "EPSG: 4326"}); var new_projection = tile_layer.getSource (). getProjection (); polygon_feature.getGeometry (). transform (current_projection, new_projection);
4. solis. Izveidojiet sfēru, lai veiktu aprēķinu
Sfērai jābūt Zemes izmēram (rādiusam jābūt 6,3 m). Tehniski sfēras rādiuss ir vienāds ar WGS84 elipsoīda daļēji galveno asi.
var sfēra = jauns ol. Sfēra (6378137);
5. solis. Izmantojiet sfēru, lai aprēķinātu laukumu, izmantojot metodi geodesicArea ()
Tā kā metode sniedz vērtību kvadrātmetros, daliet to ar miljonu, lai iegūtu kvadrātkilometrus.
var area_m = sphere.geodesicArea (koordinātas); var area_km = area_m / 1000 /1000; console.log ('area:', area_km, 'km²'); // KONSOLE: platība: 2317133.7166773956 km²
6. solis. Pārbaudiet, vai apgabala atbildei ir jēga
Mēs zinām, ka tas ir pareizi, jo šķiet, ka tas ir aptuveni tāds pats kā Alžīrija, kuras platība ir 2, 381, 741 km² (no Vikipēdijas).