मैं कैटलॉग 1.4 इस तरह में कैनवास का विस्तार करने का प्रयास कर रहा हूं:

L.Canvas.FPCanvas = L.Canvas.extend({
  options: {
    width: 1,
    height: 1
  },

  initialize: function(name, options) {
    this.name = name;
    L.setOptions(this, options);
  },

  onAdd: function (map){},

  onRemove: function (map) {}
});

L.canvas.fpCanvas = function(id, options) {
  return new L.Canvas.FPCanvas(id, options)
}

console.log(L.canvas.fpCanvas("fpCanvas", {width: 10, height: 10}))

const myRenderer = L.canvas();
console.log(myRenderer)

जब मैं अपने विस्तारित कैनवास को कंसोल पर लॉग करता हूं तो प्रोटोटाइप श्रृंखला सब कुछ अच्छा दिखता है। हालांकि जब मैं नीचे दिए गए कोड को लॉग करता हूं:

const myRenderer = L.canvas();
console.log(myRenderer)

_layers: {}
_leaflet_id

ये दो अतिरिक्त गुण दिखाई देते हैं, जबकि मैं उनसे समान होने की उम्मीद कर रहा था। मैं इन अतिरिक्त गुणों को शामिल करने के लिए अपने कैनवास विस्तार को कैसे संशोधित करूं, यह मानते हुए कि मुझे उन्हें विस्तारित कस्टम कैनवास के साथ काम करने की आवश्यकता है। धन्यवाद

0
Tristan Forward 25 फरवरी 2019, 04:53

1 उत्तर

सबसे बढ़िया उत्तर

आप L.Canvas.initialize() कार्यान्वयन को अपने स्वयं के साथ बदल रहे हैं - इसलिए, डिफ़ॉल्ट आरंभीकरण नहीं हो रहा है

मुझे कक्षा विस्तार पर पत्रक ट्यूटोरियल से उद्धृत करने दें:

माता-पिता वर्ग की एक विधि को कॉल करके प्राप्त किया जाता है मूल वर्ग का प्रोटोटाइप और Function.call(…) का उपयोग करना। ये हो सकता है उदाहरण के लिए, L.FeatureGroup के कोड में देखा जा सकता है:

L.FeatureGroup = L.LayerGroup.extend({

    addLayer: function (layer) {
        …
        L.LayerGroup.prototype.addLayer.call(this, layer);
    },

    …
});

माता-पिता के कंस्ट्रक्टर को कॉल करना इसी तरह से किया जाता है, लेकिन इसका उपयोग करना इसके बजाय ParentClass.prototype.initialize.call(this, …)

1
IvanSanchez 25 फरवरी 2019, 11:10