أكثر

هل تريد تبديل إرشادات الخرائط باستخدام PyQGIS؟

هل تريد تبديل إرشادات الخرائط باستخدام PyQGIS؟


أريد عرض "تلميحات الخرائط" في QGIS باستخدام لغة الثعبان في لوحة خريطتي المخصصةQgsMapCanvas ().

كيف يمكنني أن أفعل هذا؟ يمكنني التبديل يدويًا مع عرض / نصائح الخريطة لكنها لن تعمل مع لوحة الرسم المخصصة الخاصة بي في المكون الإضافي الخاص بي ، فهي تعمل فقط معiface.mapCanvas ().


لست متأكدًا مما إذا كانت هناك طريقة أخرى ، ولكن هذه هي الطريقة التي طبقتها بها.

أنت بحاجة إلى هذه الوظائف الثلاث (تأكد من استيراد فئات QGIS و Qt4 المطلوبة من قبل):

def createMapTips (self): "" "إنشاء MapTips على الخريطة" "" self.timerMapTips = QTimer (self.canvas) self.mapTip = QgsMapTip () self.connect (self.canvas، SIGNAL ("xyCoordinates (const QgsPoint &) ")، self.mapTipXYChanged) self.connect (self.timerMapTips، SIGNAL (" timeout () ")، self.showMapTip) def mapTipXYChanged (self، p):" "" SLOT. قم بتهيئة المؤقت لإظهار MapTips على الخريطة "" إذا كان self.canvas.underMouse (): # فقط إذا كان الماوس فوق الخريطة # هنا يمكنك التحقق مما إذا كان زر MapTips المخصص نشطًا أم لا شيء self.lastMapPosition = QgsPoint (px () ، py ()) self. mapTip.clear (self.canvas) self.timerMapTips.start (750) # الوقت بالمللي ثانية def showMapTip (self): "" "SLOT. اعرض MapTips على الخريطة" "self.timerMapTips.stop () إذا self.canvas .underMouse (): # هنا يمكنك التحقق مما إذا كان زر MapTips المخصص نشطًا أم لا. )

ستحتاج أيضًا إلى تعيين طبقة ، وربما حقل عرض:

self.layer = layer # لـ MapTips self.layer.setDisplayField ('NMG')

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

self.createMap تلميحات ()

يجب أن تكون قادرًا على رؤية نصائح الخريطة على خريطتك المخصصة

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


تستطيع ايضا استخذامiface.actionMapTips (). trigger ()وفي QGIS 3.x لاستخدام وصف حقل الطبقةlayer.setDisplayExpression ('اسم_المجال')

أيضًا إذا كنت تريد إنشاء وظيفة للتحكم في التحقق وإلغاء التحديد ، فاستخدم ما يلي:

iface.actionMapTips (). setChecked (صواب)

شاهد الفيديو: QGIS Python PyQGIS - Create a Custom Processing Script for QGIS in the Processing Toolbox