Viac

Problémy s OpenLayers 2.14. Funkcia Draw.Feature neaktivuje kresliace plátno polygónu. Čo mám robiť?


Ako odpoveď na požiadavky komunity, aby som bol konkrétnejší k môjmu problému a odoslal všetok kód, som si dovolil upraviť predchádzajúci príspevok v nádeji, že tentoraz bude problém vysvetlený jasnejšie a ak sa nájde riešenie, môže pomôcť iným ktorí narazia na situáciu, ako je moja.

V mojom projekte som vytvoril mapu, ktorá obsahuje niekoľko prekrytí, z ktorých 4 patria do Máp Google (terén, satelit, cesty a hybrid).

Mojím cieľom bolo vytvoriť funkciu, ktorá volá OpenLayers.Control.DrawFeature, aby definovala vrstvu, v ktorej môže koncový používateľ nakresliť mnohouholník. Funkcia sa spustí po stlačení tlačidla.

Vypočul som si Thomasov návrh a vložil som výstražný riadok, aby som sa ubezpečil, že stlačením tlačidla funkcia funguje. Výsledkom je, že sa mi po kliknutí na tlačidlo zobrazila správa na mojej obrazovke, ale nič viac.

Moja otázka znie: Aké úpravy by som mal vykonať na funkcii, aby mohla fungovať? Kde som spravil chybu?

Inšpiroval som sa z: http://dev.openlayers.org/examples/draw-feature.html, ale keďže som v obchode s internetovým GIS celkom nový (pravdepodobne kvôli nedostatku skúseností), moja vlastná funkcia nefungovala .

Ak skopírujem kód z vyššie uvedeného odkazu, funguje to perfektne, ale mojim cieľom je porozumieť jeho logike a byť schopný vytvoriť niečo nezávislé.

Tu je môj HTML kód:

Telo môjho projektu {šírka: 960px; výška: 500px; poloha: relatívna; } #map {šírka: 100%; výška: 100%; } div.fill {šírka: 100%; výška: 100%; } div.ol-mouse-position {width: 50px; výška: 50px; poloha = relatívna; farba: červená; } .layersDiv {farba pozadia: červená; }

Scaleline-id

{pozadie: zelené; okraj: 10 pixelov; písmo: Times New Roman; šírka: 50px; farba písma: červená; }

Súradnice

{pozadie: ružové; okraj: 10 pixelov; poloha: absolútna; farba písma: modrá; }

  
Vyberte vrstvu
Okolie
Cesty
Stavby
Google Maps Hybrid
Kresba

OL2.js je skript OpenLayers v 2.14 skopírovaný lokálne.


Za predpokladu, že vášthetafunkcia sa volá, problém, ktorý vidím, je, že vytvárate inštanciu nového obslužného programu, ktorý nepotrebujete.

Nasledujúcithetafunkcia by mala fungovať:

funkcia theta () {var x = new OpenLayers.Layer.Vector ("one"); var p = nový OpenLayers.Control.DrawFeature (x, OpenLayers.Handler.Polygon); map.addLayer (x); map.addControl (p); p.activate (); }


Pozri si video: Create Maps with Vector Tiles. OpenLayers. Mapbox GL JS (Október 2021).