أكثر

قواعد وسياق OpenLayers ، ما هو الفرق؟

قواعد وسياق OpenLayers ، ما هو الفرق؟


يستخدم OpenLayers.Style خاصيتين ، "القاعدة" و "السياق" والتي تحتوي وفقًا لذلك على مصفوفة من OpenLayers.Rule ومجموعة من الطرق.

لقد لاحظت أن "السياق" يمكن بطريقة ما أن تحل محل "القاعدة". على سبيل المثال ، في حالة وجود طبقة متجه تعرض درجات الحرارة كميزات ، مع "temp" في خصائصها للقيم.

var temperatureStyle1 = new OpenLayers.Style ({// common symbolizer styles fontFamily: "Arial"، label: "$ {temp}"، fontColor: "$ {coltem}"، fontWeight: "bold"}، {Context: {coltem : function (feature) {var temperature = parseInt (feature.attributes.temp)؛ var col = "# 000000"؛ if (temperature> 35) {col = "# CF2900"؛} // Hot if (temperature <0) {col = "# 0000FF" ؛} // Cold return col؛}}}) ؛

إلى حد ما يعادل

var temperatureStyle2 = new OpenLayers.Style ({// أنماط الرموز الشائعة fontFamily: "Arial"، label: "$ {temp}"، // fontColor: "$ {coltem}"، not really need fontWeight: "bold"}، {rules: [new OpenLayers.Rule ({filter: new OpenLayers.Filter.Comparison ({type: new OpenLayers.Filter.Comparison.LESS_THAN، property: "temp"، value: 0})، رمز الرمز: {fontColor: "# 0000FF "}}) ، OpenLayers.Rule الجديد ({filter: new OpenLayers.Filter.Comparison ({type: new OpenLayers.Filter.Comparison.GREATER_THAN ، الخاصية:" temp "، القيمة: 35}) ، الرمز: {fontColor: "# CF2900"}}) ، قاعدة OpenLayers.Rule الجديدة ({elseFilter: true ، الرمز: {fontColor: "# 000000"}})]})؛

ما هي الفوائد في كل من هذين النهجين؟ لا أستطيع إلا أن أرى أنه باستخدام "السياق" يمكنني تغيير نمط واحد فقط (من الرمز) في كل مرة ، بينما باستخدام "القواعد" يمكنني إعادة تعريف رمز كامل - بدلاً من عمل العديد من طرق السياق لكل نمط بإجراء نفس المقارنة كل مرة.

هل هناك أي شيء آخر لا أستطيع رؤيته؟ ما سبب وجود كائن "السياق"؟


عندما تعمل بشكل صارم مع القواعد ، يمكن إجراء تسلسل لأنماطك إلى SLD ، وإلا فلا. العمل مع الأنماط الثابتة والسياق له فائدة طفيفة في الأداء.


شاهد الفيديو: Openlayers 6 Tutorial #1 - Introduction to Openlayers