कैसे बनाएं सुविधाएँ DrawFeature नियंत्रण द्वारा?


9

मैं इस ट्यूटोरियल का अनुसरण कर रहा हूं: http://workshop.pgrout.org/chapters/geoext_client.html#select-the-start-and-final-destination

इसमें एक Openlayers.Control.DrawFeatures नियंत्रण है जो निम्नलिखित कोड नमूने में परिभाषित किया गया है। आप उन पंक्तियों को भी देख सकते हैं जहां लेखक टिप्पणी करता है "अगर हम प्रारंभ बिंदु पर एक विशेष शैली लागू करना चाहते हैं तो हमें यह करना चाहिए" । समस्या यह है: मुझे नहीं पता कि इस सेटिंग में कोई शैली कैसे लागू की जाए और इस तरह से ड्राफिटर्स नियंत्रण का उपयोग करके कोई उदाहरण नहीं मिल सकता है।

इस ड्राफ़िटर्स नियंत्रण का उपयोग करके मेरे पास आरंभ बिंदु से भिन्न शैली का उपयोग कैसे किया जा सकता है?

DrawPoints = OpenLayers.Class(OpenLayers.Control.DrawFeature, {

// this control is active by default
autoActivate: true,

initialize: function(layer, options) {
    // only points can be drawn
    var handler = OpenLayers.Handler.Point;
    OpenLayers.Control.DrawFeature.prototype.initialize.apply(
            this, [layer, handler, options]
        );
},

drawFeature: function(geometry) {
    OpenLayers.Control.DrawFeature.prototype.drawFeature.apply(
            this, arguments 
        );
    if (this.layer.features.length == 1) {
        // we just draw the startpoint
        // note: if we want to apply a special style to the 
        //       start point we should do this here
    } else if (this.layer.features.length == 2) {
        // we just draw the finalpoint
        // note: if we want to apply a special style to the 
        //       final point we should do this here

        // we have all what we need; we can deactivate ourself.
        this.deactivate();            
    }
}
});

जवाबों:


7

इन पंक्तियों को जोड़ें और अपनी शैली के अनुरूप उन्हें संशोधित करें:

...
    if (this.layer.features.length == 1) {
        // we just draw the startpoint
        // note: if we want to apply a special style to the 
        //       start point we should do this here

        var myFirstPointStyle = OpenLayers.Util.applyDefaults(myFirstPointStyle, OpenLayers.Feature.Vector.style['default']);
        myFirstPointStyle.fillOpacity = 0.8;
        myFirstPointStyle.strokeWidth = 2;
        myFirstPointStyle.fillColor = "#ffffff";
        this.layer.features[this.layer.features.length - 1].style = myFirstPointStyle;

        this.layer.redraw();

    } else if (this.layer.features.length == 2) {
        // we just draw the finalpoint
        // note: if we want to apply a special style to the 
        //       final point we should do this here
        var mySecondPointStyle = OpenLayers.Util.applyDefaults(mySecondPointStyle, OpenLayers.Feature.Vector.style['default']);
        mySecondPointStyle.fillOpacity = 0.8;
        mySecondPointStyle.strokeWidth = 7;
        mySecondPointStyle.pointRadius = 12;
        mySecondPointStyle.fillColor = "#000000";
        this.layer.features[this.layer.features.length - 1].style = mySecondPointStyle;

        this.layer.redraw();


        // we have all what we need; we can deactivate ourself.
        this.deactivate();
    }
...

यह डिफ़ॉल्ट शैली की नकल करेगा और आप इसे वहां से संशोधित कर सकते हैं। आपको कुछ इस तरह से मिलना चाहिए:

यहां छवि विवरण दर्ज करें


बहुत धन्यवाद! Redraw () कॉलिंग की तरह लगता है यहाँ कुंजी है। मैं कभी नहीं की कोशिश की है कि :)
UnderDark

आपका स्वागत है, यह हमेशा एक मास्टर की मदद करने के लिए पुरस्कृत कर रहा है :)
16

बहुत बहुत धन्यवाद क्योंकि इसने मेरी समस्या को भी हल कर दिया जो शैलियों के अनुप्रयोग से संबंधित था
जीएसटीओएमआर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.