اذهب إلى المحتوى

السؤال

نشر

لدي رسم تخطيطي مثل الصورة المرفقة 

طبعا الصورة بصيغة. jpg  ارغب في التالي 

عند ضغط المستخدم على جزء من الصورة( مطبخ مثلا) يتم جلب بعض البيانات عنها مثلا ( السعر - السعة - المزايا ) من قاعدة البيانات

وعرضها عليه ويمكنه مثلا حجز هذا المكان

وعندما يتم حجز المكان من قبل مستخدم يظهر باللون الاحمر ( كما في مواقع حجز تذاكر السينما ) 

هل استطع عمل ذلك من خلال تحويل الصورة الى SVG والتعامل معها أم هناك مكتبات توفر ذلك 

أفيدوني جزاكم الله خيرا

img.png

Recommended Posts

  • 1
نشر

يمكنك استخدام وسم map في HTML و بذلك يمكنك تحديد مناطق معينة باستخدام وسم area و تركيب وسم map بهذا الشكل 

<!-- Image Map Generated by http://www.image-map.net/ -->
<img src="img.png.0124e30d47124b2473c9f4a1641f2d5f.png" usemap="#image-map">

<map name="image-map">
    <area target="_blank" alt="" title="" href="" coords="28,42,224,176" shape="rect">
    <area target="" alt="" title="" href="" coords="224,176,22,291" shape="rect">
    <area target="" alt="" title="" href="" coords="" shape="0">
</map>

ولاحظي أن وسم area يحتوي على خاصيتين مهمتين و هي خاصية coords التي توضع بداخلها أحداثيات المنطقة المحددة , و الخاصية shape التي تحدد نوع المنطقة مثل rect , poly, circle أو يمكنك استخدام أحد المواقع التي تقدم خدمة تحديد المناطق على الصورة مثل هنا و هنا حيث يمكنك رفع الصورة التي تودين تحديد المواقع عليها و من ثم يمكنك رسم المناطق باستخدام الأداوت المقدمة و من ثم آخر شيء هو توليد وسم map و بداخله المناطق محددة و من ثم يمكنك التعامل مع هذا الوسم برمجياً باستخدام جافاسكريبت أو PHP .  

  • 1
نشر

في حال قمت بتحويل الصورة إلى النمط svg يمكنك إدراج شيفرة جافاسكريبت ضمنها باستخدام الوسم CDATA والاستجابة لنشاط المستخدم داخلها، مثال بسيط:

      <svg width="600" height="600">
         <script type="text/JavaScript">
            <![CDATA[
               function showColor() {
                  alert("Color of the Rectangle is: "+
                  document.getElementById("rect1").getAttributeNS(null,"fill"));
               }
               
               function showArea(event){
                  var width = parseFloat(event.target.getAttributeNS(null,"width"));
                  var height = parseFloat(event.target.getAttributeNS(null,"height"));
                  alert("Area of the rectangle is: " +width +"x"+ height);
               }
               
            ]]>
         </script>
         
         <g>
            <text x="30" y="50" onClick="showColor()">show rectangle color.</text>
            <rect id="rect1" x="100" y="100" width="200" height="200" 
            stroke="green" stroke-width="3" fill="red" 
            onClick="showArea(event)"/>
         </g>
      </svg>

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...