التفاعل مع الخريطة (Android SDK)

يوضح لك هذا المقال كيفية استخدام مدير أحداث الخرائط.

إشعار

خرائط Azure إيقاف Android SDK

تم الآن إهمال خرائط Azure Native SDK لنظام التشغيل Android وسيتم إيقافه في 3/31/25. لتجنب انقطاع الخدمة، قم بالترحيل إلى خرائط Azure Web SDK بحلول 3/31/25. لمزيد من المعلومات، راجع دليل ترحيل خرائط Azure Android SDK.

التفاعل مع الخريطة

تدير الخريطة جميع الأحداث من خلال خاصية events الخاصة بها. يسرد الجدول التالي أحداث الخريطة المدعومة.

الحدث تنسيق معالج الأحداث ‏‏الوصف
OnCameraIdle ()

يتم إطلاقها بعد الإطار الأخير الذي تم عرضه قبل دخول الخريطة في حالة "الخمول":

  • لا توجد مراحل انتقالية جارية في الكاميرا.
  • تم تحميل جميع المربعات المطلوبة حالياً.
  • اكتملت جميع حركات التلاشي/الانتقال.

OnCameraMove () يطلق النار بشكل متكرر أثناء الانتقال المتحرك من طريقة عرض إلى أخرى، نتيجة لتفاعل المستخدم أو الأساليب.
OnCameraMoveCanceled () يتم إطلاقه عند إلغاء طلب حركة إلى الكاميرا.
OnCameraMoveStarted (int reason) يبدأ التشغيل قبل أن تبدأ الخريطة في الانتقال من طريقة عرض إلى أخرى، كنتيجة لتفاعل المستخدم أو الأساليب. تقوم الوسيطة reason الخاصة بمستمع الحدث بإرجاع قيمة عدد صحيح يوفر تفاصيل حول كيفية بدء حركة الكاميرا. توضح القائمة التالية الأسباب المحتملة:
  • 1: الإيماءة
  • 2: رسوم متحركة للمطور
  • 3: رسوم متحركة لـ API
OnClick (double lat, double lon): boolean تشغيل عند الضغط على الخريطة وإطلاقه في نفس النقطة على الخريطة. يقوم معالج الأحداث هذا بإرجاع قيمة منطقية تشير إلى ما إذا كان يجب استهلاك الحدث أو تمريره إلى مستمعي الحدث الآخرين.
OnFeatureClick (List<Feature>): boolean تشغيل عند الضغط على الخريطة وإطلاقه في نفس النقطة على الميزة. يقوم معالج الأحداث هذا بإرجاع قيمة منطقية تشير إلى ما إذا كان يجب استهلاك الحدث أو تمريره إلى مستمعي الحدث الآخرين.
OnLayerAdded (Layer layer) تشغيل عند إضافة طبقة إلى الخريطة.
OnLayerRemoved (Layer layer) تشغيل عند إزالة طبقة من الخريطة.
OnLoaded () الحرائق مباشرة بعد تنزيل جميع الموارد الضرورية وحدث أول عرض كامل بصريا للخريطة.
OnLongClick (double lat, double lon): boolean تشغيل عند الضغط على الخريطة، وعقدها للحظة، ثم إطلاقه في نفس النقطة على الخريطة. يقوم معالج الأحداث هذا بإرجاع قيمة منطقية تشير إلى ما إذا كان يجب استهلاك الحدث أو تمريره إلى مستمعي الحدث الآخرين.
OnLongFeatureClick (List<Feature>): boolean تشغيل عند الضغط على الخريطة، وعقده للحظة، ثم إصدارها في نفس النقطة على ميزة. يقوم معالج الأحداث هذا بإرجاع قيمة منطقية تشير إلى ما إذا كان يجب استهلاك الحدث أو تمريره إلى مستمعي الحدث الآخرين.
 OnReady                (AzureMap map)       يتم إطلاقه عند تحميل الخريطة في البداية، ويتغير الاتجاه، والحد الأدنى المطلوب لتحميل موارد الخريطة، والخريطة جاهزة للتفاعل معها برمجيا. 
OnSourceAdded (Source source) تشغيل عند إضافة DataSource أو VectorTileSource إلى الخريطة.
OnSourceRemoved (Source source) تشغيل عند إزالة DataSource أو VectorTileSource من الخريطة.
OnStyleChange () تشغيل عند تحميل نمط الخريطة أو تغييره.

توضح التعليمة البرمجية التالية كيفية إضافة أحداث OnClickوOnFeatureClickOnCameraMove إلى الخريطة.

map.events.add((OnClick) (lat, lon) -> {
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnFeatureClick) (features) -> {
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnCameraMove) () -> {
    //Map camera moved.
});
map.events.add(OnClick { lat: Double, lon: Double -> 
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnFeatureClick { features: List<Feature?>? -> 
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnCameraMove {
    //Map camera moved.
})

لمزيد من المعلومات، راجع وثائق التنقل في الخريطة حول كيفية التفاعل مع الخريطة وتشغيل الأحداث.

أحداث ميزة النطاق إلى الطبقة

OnFeatureClick عند إضافة الأحداث أو OnLongFeatureClick إلى الخريطة، يمكن تمرير مثيل طبقة أو معرف طبقة كمعلمة ثانية. عند تمرير طبقة، يتم تشغيل حدث إذا حدث على تلك الطبقة. يتم دعم الأحداث التي تم تحديد نطاقها للطبقات بواسطة طبقات الرمز والفقاعة والخط والمضلع.

//Create a data source.
DataSource source = new DataSource();
map.sources.add(source);

//Add data to the data source.
source.add(Point.fromLngLat(0, 0));

//Create a layer and add it to the map.
BubbleLayer layer = new BubbleLayer(source);
map.layers.add(layer);

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnFeatureClick) (features) -> {
    //One or more features clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnLongFeatureClick) (features) -> {
    //One or more features long clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);
//Create a data source.
val source = DataSource()
map.sources.add(source)

//Add data to the data source.
source.add(Point.fromLngLat(0, 0))

//Create a layer and add it to the map.
val layer = BubbleLayer(source)
map.layers.add(layer)

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnFeatureClick { features: List<Feature?>? -> 
        //One or more features clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnLongFeatureClick { features: List<Feature?>? -> 
         //One or more features long clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

الخطوات التالية

راجع المقالات التالية للحصول على أمثلة التعليمة البرمجية الكاملة: