Vairāk

GeoJSON rekvizītu iestatīšana OpenLayers

GeoJSON rekvizītu iestatīšana OpenLayers


Man ir karte ar slāņiem, kuriem ir līdzīgi atribūti. Es vēlos pievienot funkciju, kas, atlasot slāņa līdzekli, citā objektā meklē objektu ar līdzīgām īpašībām (šajā gadījumāNAME) un, ja tiek atrasts līdzīgs līdzekļa rekvizīts, tiek mainīts atbilstošās funkcijas stils.

Man ir JSfiddle, kas mēģina to sasniegt šeit: http://jsfiddle.net/TimLucas/nmd2vsww/6/

Funkcija tiek izsaukta, izmantojot otro pogu. Kā redzat ,.gūt()funkcijas darbojas, izmantojot funkciju, ko izsauc pirmā poga.

Šeit man galvenokārt ir problēmas ar to, kā jūs varat iestatīt rekvizītus (nevis iegūt) VectorSource GeoJSON failā. ES izmantoju.attr ()bet es neesmu pārliecināts, vai tas tiešām darbojas.

Vai kāds zina, kā to izdarīt?


Rediģēts:

Jūsu kodā ir vairākas kļūdas, proti:

  1. Jūsu stila funkcijas izmanto feature.getGeometry (). GetType (); Tas vienmēr atgriezīs "Punktu" punkta ģeometrijai.

Stila funkcijai vajadzētu būt apmēram šādai:

var styleFunction1 = funkcija (iezīme, izšķirtspēja) {if (feature.get ("type")) {return styles1 [feature.get ("type")]; } atgriešanās stili1 ["Punkts"]; };
  1. Jūsu jaunā ol.interaction.Select ({}); nav stila atribūta, tas nozīmē, ka tas vienmēr izmantos noklusējuma stilu atlasītajām funkcijām

Nosauciet stilu:

select = new ol.interaction.Select ({condition: ol.events.condition.click, style: blueCircle});
  1. Atzvanīšanas pogai “Atrast” ir vairākas kļūdas:

    • kad atrodat atbilstošu līdzekli, tā indeksu saglabājat selectArray
    • jums vajadzētu izmantot set (), lai objektam iestatītu jaunu atribūtu

Labāka funkcija:

FindButton.addEventListener ('click', function () {if (select) {// Iegūstiet objekta nosaukumu var features = select.getFeatures (); var selectedFeature = features.item (0); var name = selectedFeature.get ("NAME"); // Atrodiet atbilstošo nosaukumu citā slānī var otherFeatures = Layer2Source.getFeatures (); for (var i = 0; i 

Sākotnējā atbilde (kontekstam)

Lai gan es neesmu pārliecināts, kā panākt, lai atrastās funkcijas tiktu pārzīmētas, izmantojot to pašu stilu (es domāju, ka varat tam piešķirt jaunu stilu, izmantojot funkciju setStyle (http://openlayers.org/en/v3.1.1/apidoc/ ol.Feature.html? unstable = true#setStyle)), man izdevās pārrakstīt jūsu kodu, lai iestatītu atribūtu līdzīgām funkcijām:

var FindButton = document.getElementById ('atrast-sim-nosaukums'); FindButton.addEventListener ('click', function () {if (select) {// Iegūstiet objekta nosaukumu var features = select.getFeatures (); var feature = features.item (0); var id = feature.get ("NAME"); // Atrodiet atbilstošo nosaukumu citā slānī // šim masīvam ir atbilstošas ​​funkcijas var selectArray = []; // cilpa caur visām slāņa funkcijām (var i = 0; i  0) {for (var j = 0; j 

Skatīties video: Openlayers 6 Tutorial #9 - Interaction With Vector Features