إنتقل إلى المحتوى الرئيسي

عنصر <kaleidr-map>

<kaleidr-map> هو الأسلوب التصريحي لتركيب أحد منتجات Kaleidr. تكتب العنصر مع سماته، فيُركَّب تلقائيًا عند إدراجه في المستند ويُزال عند إخراجه. يعرّفه kaleidr.js، ولذلك يجب تحميل هذا السكربت في الصفحة.

<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>

<kaleidr-map product="viewer" share-id="YOUR_MAP_ID"
style="display:block; height:480px"></kaleidr-map>

العنصر غلاف خفيف يحوّل سماته إلى خيارات ويستدعي Kaleidr.mount على نفسه. كل ما يفعله العنصر ممكن عبر Kaleidr.mount، ولكن العكس ليس صحيحًا: فلا يمكن للعنصر تلقي كائن خريطة يعمل بالفعل، ولا يعيد المقبض.

استخدم العنصر عندمااستخدم Kaleidr.mount عندما
يكون التضمين ترميز HTML ثابتًا.تحتاج إلى المقبض لتشغيل setCamera أو setStyle أو setTheme أو destroy.
ينشئ نظام إدارة المحتوى أو القالب ترميز HTML.تربط Chat بخريطتك الخاصة، وهو ما يتطلب خيار map.
تريد التنظيف تلقائيًا عند إزالة العنصر من المستند.يتحكم إطار العمل في توقيت التركيب والإزالة.

السمات​

تُكتب أسماء السمات بصيغة kebab-case، وتُكتب خيارات التركيب المقابلة بصيغة camelCase.

السمةخيار التركيبالمنتجاتمطلوبالافتراضييُراقَب بعد التركيبالوصف
productproductالجميعنعملا شيءلاchat أو viewer أو editor أو tile.
publishable-keypublishableKeychat، editor، tileنعم، باستثناء Chat على خريطة منشورةلا شيءلامفتاحك kld_pk_…. لا يستخدمه Viewer.
share-idshareIdviewer، chatمطلوب في viewerلا شيءلافي Viewer: معرّف الخريطة المنشورة. وفي Chat بلا مفتاح: الخريطة المنشورة التي توفر الدردشة.
map-idmapIdviewerلالا شيءلااسم بديل لـ share-id.
style-idstyleIdtile، editorيوصى به في Tileالخريطة الأساسية الافتراضية للمؤسسة؛ وفي Editor يليها kaleidr-morningلامعرّف نمط خريطة أساسية أو عنوان URL للنمط.
map-targetmapTargetchatلالا شيءلامحدِّد CSS لعنصر <kaleidr-map> من نوع Viewer أو Tile ليتحكم فيه المساعد.
containedcontainedchatلامعطللايثبت لوحة الدردشة داخل العنصر، الذي يجب تحديد موضعه وأبعاده.
langlangchatلالغة <html lang> إذا كان الوسم صالحًا، وإلا فالإنجليزيةلالغة إجابات اللوحة بصيغة BCP 47 مثل en أو ko أو pt-BR. راجع لغة Chat.
chat-titletitlechatلاعنوان اللوحة الافتراضيلاعنوان رأس اللوحة. السمة هي chat-title وليست title، لأن title في HTML يعرض تلميحًا عند المرور بالمؤشر.
placeholderplaceholderchatلاالنص الإرشادي الافتراضي للوحةلاالنص الإرشادي في حقل الإدخال.
layoutlayoutviewerلاmapلاتركّب القيمة bar شريط الدردشة، الذي يقرأ أيضًا chat-title وplaceholder وtheme وlang بقيم افتراضية خاصة به: راجع خيارات Viewer. تعرض locator وlistings الخريطة بجانب قائمة لمجموعة من مكتبة الأماكن: راجع تخطيطات الأماكن. تفتح guide الدردشة بجانب خريطة للمنشآت: راجع تخطيط الدليل. تعرض live المركبات ومحطات اليوم: راجع التخطيط المباشر.
collectioncollectionمحدد المواقع وقائمة العقارات والدليل والمباشر في Viewerلاأول مجموعة من نوع التخطيط ترسمها الخريطةلامعرّف المجموعة المعروضة في القائمة؛ وفي live معرّف مجموعة المركبات.
stopsstopsالمباشر في Viewerلاأول مجموعة محطات ترسمها الخريطةلامعرّف مجموعة المحطات.
filtersfiltersمحدد المواقع وقائمة العقارات في Viewerلاكل عوامل تصفية المجموعةلاعوامل تصفية الزوار المعروضة، مفصولة بـ |: search وcategory وprice وbeds وbaths وopen_now.
cardcardviewerلاautoلاتعرض بطاقات الأماكن compact العنوان الرئيسي والعنوان الفرعي والإجراءات فقط.
promptpromptviewerلالا شيءلاسؤال لطرحه على Kaleidr AI الخاص بالخريطة عند فتحها؛ وفي شريط الدردشة، النص المعبأ مسبقًا في الحقل.
prompt-parampromptParamviewerلالا شيءلايقرأ prompt من معامل الاستعلام هذا في عنوان URL للصفحة، عندما يأتي الزائر من صفحة من الأصل نفسه.
promptspromptsشريط دردشة Viewerلالا شيءلاأمثلة أسئلة، مفصولة بـ |.
accentaccentشريط دردشة Viewerلا#2da84aلالون CSS.
results-urlresultsUrlشريط دردشة Viewerلالا شيءلايرسل الزوار إلى تلك الصفحة مع ?q=<question>.
centercenterviewer، tile، editorلاالقيمة الافتراضية للمنتجنعم"longitude,latitude"، مثل "-0.1276,51.5072".
zoomzoomviewer، tile، editorلاالقيمة الافتراضية للمنتجنعمرقم. لا يُطبَّق عند تركيب Viewer وTile إلا مع center.
pitchpitchviewer، tile، editorلاالقيمة الافتراضية للمنتجنعمزاوية الميل بالدرجات.
bearingbearingviewer، tile، editorلاالقيمة الافتراضية للمنتجنعمزاوية الدوران بالدرجات.
themethemechat، editorلالا شيءنعم (يؤثر في Chat فقط)سلسلة JSON. في Chat خصائص CSS مخصصة، وفي Editor مفاتيح السمات السبعة عشر.
flagenabledالجميعلالا شيءلاتحكم على مستوى العنصر في بوابة التفعيل.
basebaseالجميعلاhttps://cdn.kaleidr.comلامصدر حزم المنتج. يُقبل فقط نطاق CDN الخاص بـ Kaleidr (https://cdn.kaleidr.com)، أو المصدر الذي حُمِّل منه kaleidr.js، أو مصدر الصفحة نفسها. تُتجاهل القيم الأخرى مع تحذير. راجع تجاوز العنوان الأساسي.
viewer-baseviewerBaseviewer، tileلاhttps://map-embed.kaleidr.comلامصدر تحميل iframe.
api-baseapiBasechat، editor، tileلاhttps://api.kaleidr.com/inference-apiلاوجهة تبادل الجلسة وطلبات المنتج. يجب أن يتضمن /inference-api.
tile-basetileBaseeditorلاhttps://tile.kaleidr.comلاالمضيف الذي تُحلّ من خلاله معرّفات الأنماط.

api-key اسم بديل مهمل لـ publishable-key. وتُستخدم سمات …-base الأربع للاختبار مع نشر آخر، ولا حاجة إليها في بيئة الإنتاج.

السمات المنطقية​

تُقرأ السمتان flag وcontained بوصفهما قيمتين منطقيتين:

طريقة الكتابةالقيمة المقروءة
contained دون قيمة، أو contained=""صحيح
"true" أو "1" أو "yes" أو "on"صحيح
"false" أو "0" أو "no" أو "off"خطأ
غياب السمةغير محدد
أي قيمة أخرىتُتجاهل مع تحذير في وحدة التحكم

لا تؤثر حالة الأحرف أو المسافات المحيطة في المطابقة، لذا فإن flag="False" يعطل العنصر. ولأن وجود السمة دون قيمة يعني «صحيح»، فإن القالب الذي ينتج flag="" يفعّل العنصر. اكتب false صراحة.

سمات الأرقام والكاميرا​

تُحلّل zoom وpitch وbearing كأرقام. وتحتوي center على رقمين مفصولين بفاصلة، خط الطول أولاً. تُتجاهل القيمة التي يتعذر تحليلها دون رسالة، وتُستخدم القيمة الافتراضية للمنتج.

السمات بعد التركيب​

يقرأ العنصر سماته مرة واحدة عند دخوله المستند. وبعد ذلك يراقب خمس سمات فقط:

السمة المتغيرةviewertileeditorchat
center وzoom وpitch وbearingتنتقل الخريطة مباشرة إلى وضع الكاميرا الجديد.تنتقل الكاميرا مباشرة.تنتقل الكاميرا مباشرة.تحذير في وحدة التحكم دون تأثير.
themeتحذير في وحدة التحكم.تحذير في وحدة التحكم.تحذير؛ يقرأ Editor السمة عند التركيب فقط.يتغير مظهر اللوحة.
أي سمة أخرىلا شيء.لا شيء.لا شيء.لا شيء.

تغيير الكاميرا عبر السمات لا يستخدم الحركة المتدرجة. للحصول على انتقال متحرك، ركّب المنتج باستخدام Kaleidr.mount ثم استدعِ handle.setCamera({ …, duration: 800 }).

عند تغيير سمة كاميرا واحدة، يرسل العنصر كل سمات الكاميرا التي يملكها حينئذ. إذا غيّرت zoom فقط مع وجود center، يُعاد تطبيق ذلك المركز.

لتغيير share-id أو style-id أو publishable-key أو product أو flag أو contained أو lang أو chat-title أو placeholder، استبدل العنصر: أزله وأدرج آخر بسماته الجديدة. وفي Tile يمكنك استعمال handle.setStyle لتغيير النمط دون إعادة التركيب، ولكن فقط إذا رُكّب بواسطة Kaleidr.mount.

// Show a different published map in the same place.
const old = document.querySelector('kaleidr-map');
const next = old.cloneNode(false);
next.setAttribute('share-id', 'ANOTHER_MAP_ID');
old.replaceWith(next);

دورة الحياة​

الحدثما يفعله العنصر
يدخل المستنديقرأ السمات ويُركّب. تبدأ عملية تبادل جلسة في Chat وEditor وTile.
يوجد في المستند قبل تحميل kaleidr.jsلا يحدث شيء حتى تحميل السكربت، ثم يتم التركيب.
يغادر المستنديهدم التركيب، ويزيل ما أضافه، ويوقف تجديد الجلسة.
يدخل المستند مجددًايعيد قراءة السمات والتركيب مع تبادل جلسة جديد.
يُنقل إلى أبٍ آخريغادر ثم يدخل، فيُهدم ويُركّب مجددًا.
غياب product أو كانت قيمته غير إحدى القيم الأربعيسجل [kaleidr] <kaleidr-map> requires product="chat|viewer|editor|tile" ولا يُركّب. تعيين product لاحقًا لا يغير ذلك.

ينتج عن ذلك ما يلي:

  • اضبط السمات قبل إدراج العنصر. إذا أنشأته باستخدام JavaScript، اضبط سماته كلها ثم أضفه إلى المستند. إذا أضفته أولًا فسوف يُركّب بالقيم الموجودة حينها.

    const el = document.createElement('kaleidr-map');
    el.setAttribute('product', 'tile');
    el.setAttribute('publishable-key', 'kld_pk_live_…');
    el.setAttribute('style-id', 'kaleidr-night');
    el.style.cssText = 'display:block; height:480px';
    document.getElementById('slot').appendChild(el); // mounts here
  • إعادة التركيب ليست مجانية. إعادة تركيب Tile تُحسب تحميل خريطة إضافيًا. يفقد Editor تعديلاته، وتبدأ محادثة جديدة في Chat. قد تتسبب إعادة إنشاء أو ترتيب عقد DOM، كما يحدث في إعادة عرض قائمة بإطار عمل، في ذلك دون قصد. راجع دمج أطر العمل.

  • العنصر المخفي يُركّب كذلك. display:none لا يؤخر التركيب، لذا تبدأ جلسة Tile داخل علامة تبويب مغلقة.

  • يُعرض محتوى العنصر حتى تستبدله الخريطة. يظهر كل ما تضعه داخل العنصر. يستبدل Viewer وTile المحتوى بـ iframe بعد تحميلهما، لذا يمكن أن يكون العنصر الداخلي مؤشر تحميل أو بديلاً إذا فشل التركيب أو أوقفته بوابة التفعيل. لا يزيل Chat وEditor أبناء العنصر. اتركه فارغًا ما لم تحتج إلى ذلك.

تحديد الأبعاد​

يستخدم <kaleidr-map> القيمة الافتراضية display:block، لذا يمكن تطبيق height عليه:

<kaleidr-map product="viewer" share-id="YOUR_MAP_ID"
style="height:480px"></kaleidr-map>

ثلاث نقاط عن هذه القيمة الافتراضية:

  • تحديدك أنت لـ display يتقدم دائمًا. النمط المباشر، أو قواعد ورقة CSS، أو السمة hidden كلها تتجاوز الافتراضي. إذا عيّنت display:inline لا تعود height مؤثرة.
  • لا يلزم استثناء في سياسة أمان المحتوى. الافتراضي لا يمر عبر وسم <style> أو سمة style، لذا يعمل دون 'unsafe-inline'.
  • لا تحصل إصدارات Safari قبل 16.4 على هذا الافتراضي. يبقى العنصر مضمنًا ويتجاهل width وheight. لهذا تتضمن الأمثلة display:block داخل سمة style؛ لا يضر عند دعم الافتراضي ويتيح تحديد الأبعاد في الإصدارات القديمة.

لذلك تُستخدم الصيغة التالية في هذه الوثائق:

<kaleidr-map product="viewer" share-id="YOUR_MAP_ID"
style="display:block; height:480px"></kaleidr-map>

أو تُستخدم مرة واحدة للموقع كله:

kaleidr-map { display: block; height: 480px; }
المنتجسلوك الأبعاد
viewer، tileيشغل iframe عرض العنصر بنسبة 100%. ويكون ارتفاعه 100% إذا كان للعنصر ارتفاع عند التركيب، وإلا فيكون ثابتًا عند 500 بكسل. يُضبط position:relative عند غياب تحديد موضع مباشر، ويُضبط overflow:hidden على العنصر.
editorيشغل 100% من عرض العنصر وارتفاعه. إذا لم يكن له ارتفاع فلا يظهر شيء.
chatدون contained، تكون اللوحة نافذة ثابتة في الزاوية العلوية اليسرى بغض النظر عن أبعاد العنصر. ومع contained تستقر داخله ويحتاج إلى position:relative أو تموضع مماثل، وإلى أبعاد محددة.

يُقرر استخدام ارتفاع 500 بكسل البديل مرة واحدة عند التركيب. فإذا لم يكن للعنصر ارتفاع وقتها، يبقى iframe بارتفاع 500 بكسل حتى لو حددت له ارتفاعًا لاحقًا.

إذا كانت سياسة أمان المحتوى لديك تحظر سمات style المباشرة، فحدّد أبعاد العنصر عبر ورقة أنماط. لا تتأثر القيمة الافتراضية لعرضه ككتلة بهذه السياسة.

مصفوفة المقبض​

لا يتيح العنصر مقبضًا. لاستدعاء هذه الوظائف، ركّبه باستخدام Kaleidr.mount الذي يعيد مقبضًا.

الوظيفةchatviewereditortile
destroy()نعمنعمنعمنعم
setCamera(camera)غير مدعومةنعمنعمنعم
setTheme(theme)نعمغير مدعومةغير مدعومةغير مدعومة
setStyle(style)غير مدعومةغير مدعومةغير مدعومةنعم
send(text)غير مدعومةنعمغير مدعومةغير مدعومة
setFilters(filters)غير مدعومةنعمغير مدعومةغير مدعومة
showVehiclesLayer(layer)غير مدعومةنعمغير مدعومةغير مدعومة
clearVehiclesLayer()غير مدعومةنعمغير مدعومةغير مدعومة

يتضمن كل مقبض جميع هذه الوظائف. الوظيفة الموسومة «غير مدعومة» لا تفعل شيئًا عند استدعائها وتُصدر تحذيرًا في وحدة التحكم دون رمي استثناء. وهذا السلوك جزء من عقد /embed/v1.

حسب المنتج:

  • chat: تغيّر setTheme مظهر اللوحة. ولا تدعم Chat الوظيفة setCamera لأنها لا تملك خريطة: ينقل المساعد الخريطة المتصلة عند الإجابة، ويمكنك تحريك خريطتك بواجهة مكتبة الخرائط نفسها.
  • viewer: تحرك setCamera الخريطة المنشورة. وتضبط setFilters عوامل تصفية الزوار في تخطيط أماكن. وترسم showVehiclesLayer مركباتك الخاصة على الخريطة، وتزيلها clearVehiclesLayer: راجع طبقة المركبات.
  • editor: تحرك setCamera خريطة المحرر. ويُثبَّت المظهر والخريطة الأساسية عند التركيب.
  • tile: تحرك setCamera الخريطة وتستبدل setStyle الخريطة الأساسية دون إعادة التركيب.

تقبل setCamera الكائن { center, zoom, pitch, bearing, duration }. كل الحقول اختيارية، وتأتي center بصيغة [longitude, latitude]، وتقاس duration بالمللي ثانية. راجع التفاصيل في kaleidr.js.

Chat وmap-target​

يمكن لـ Chat التحكم في نوعين من الخرائط:

  • خريطتك الخاصة (Mapbox GL JS وMapLibre GL JS وGoogle Maps وLeaflet). لا يمكن كتابة كائن الخريطة داخل سمة، لذا يجب استدعاء Kaleidr.mount بخيار map. راجع مرجع Chat.

  • عنصر Viewer أو Tile من Kaleidr في الصفحة نفسها. وجّه map-target إليه باستخدام محدِّد CSS:

    <div style="position:relative">
    <kaleidr-map id="basemap" product="tile" publishable-key="kld_pk_live_…"
    style-id="kaleidr-morning"
    style="display:block; height:480px"></kaleidr-map>

    <kaleidr-map product="chat" publishable-key="kld_pk_live_…" contained
    map-target="#basemap"
    style="display:block; position:absolute; inset:0; z-index:1; pointer-events:none"></kaleidr-map>
    </div>

    لا يهم ترتيب العنصرين. يبحث Chat عن العنصر المستهدف عند الحاجة إليه.

دون map أو map-target تكون Chat لوحة بلا خريطة.

يضع الغلاف وأنماط عنصر Chat اللوحة فوق الخريطة. شُرحت كل قاعدة في المظاهر والتخطيط. وتتناول الدردشة على خريطة منشورة Chat المتصلة بخريطة منشورة.

رسائل وحدة التحكم​

الرسالةالمعنى
[kaleidr] <kaleidr-map> requires product="chat|viewer|editor|tile"سمة product غائبة أو مكتوبة خطأ؛ لن يُركّب العنصر.
[kaleidr] <attribute>="<value>" is not a recognized boolean — the attribute is IGNORED. Use <attribute>="true" / "false" (or omit it).قيمة flag أو contained غير مقبولة. تحدد الرسالة السمة: flag="…" أو contained="…".
[kaleidr] base "<value>" is IGNORED — bundles load from https://cdn.kaleidr.com. A base must be the Kaleidr CDN, the origin kaleidr.js was loaded from, or this page's own origin.تشير سمة base إلى مصدر غير مسموح. يستمر تحميل المنتج من CDN الافتراضي.
[kaleidr] embed is disabled — this mount passed `enabled: false` (or `flag="false"`). …أوقفت flag التركيب. استبدل العنصر دون هذا الإعداد ليُركّب.
[kaleidr] setCamera() is not supported on product "chat" — the call is a no-op. …تغيّرت إحدى سمات الكاميرا في Chat.
[kaleidr] setTheme() is not supported on product "<product>" — the call is a no-op. …تغيّرت سمة theme في Viewer أو Tile أو Editor.

تُسجَّل إخفاقات التركيب بصيغة [kaleidr:<product>] …. وترد قائمتها في kaleidr.js.

ما ليس متاحًا​

  • الأحداث: لا يصدر العنصر أي أحداث DOM.
  • الخصائص أو الوظائف: لا يمتلك العنصر setCamera ولا خاصية handle ولا وعد ready.
  • إعادة قراءة السمات: باستثناء السمات الخمس المراقبة، تُتجاهل التغييرات بعد التركيب.

صفحات ذات صلة​