2009-11-30 23 views
6

मैं विंडो आकार बदलने की घटना पर एक छवि मानचित्र का आकार बदलने का प्रयास कर रहा हूं। मुझे जो निकटतम मिला है वह माउसक्लिक घटना का उपयोग करना है, लेकिन जो कुछ भी मैं कर रहा हूं उसके लिए विंडो का आकार बदलने की जरूरत है। मैं फ़ायरफ़ॉक्स 3.5.5विंडो आकार बदलने पर छवि मानचित्र का आकार बदलें

का उपयोग कर रहा हूं, मैं कुछ हद तक jquery का उपयोग कर रहा हूं। यहाँ मेरी उदाहरण है - क्षेत्र बटन मैं विंडो आकार परिवर्तन पर आकार बदलने के लिए चाहते हैं ऊपर बाईं ओर स्थित है (मानचित्र और क्षेत्र बटन आकार बदलने के लिए उस पर क्लिक करें):

http://www.whitebrickstudios.com/foghornstour/imagemap3.html

किसी भी मदद की सराहना की होगी! धन्यवाद, रिच

+0

आपके पास 'imageMapResize' में एक टाइपो हो सकता है। आप कहते हैं 'स्केलएक्सवाई' ('मैप' 'जब मुझे लगता है कि आपका मतलब है' स्केलएक्सवाई ('मायमेज'' –

+0

https://github.com/davidjbradshaw/image-map-resizer – Blazemonger

उत्तर

-1

एक समारोह जब खिड़की का आकार बदलने पर कॉल करने के लिए, निम्न प्रयास करें:

scaleXY('theMap',(window).width()); 

यह कार्य करना चाहिए:

$(window).bind('resize', function() { 
    // resize the button here 
}); 

इसके अलावा, रेखा 37 डॉलर चिन्ह याद आ रही है हो:

scaleXY('theMap',$(window).width()); 
+2

हालांकि आप सच बोलते हैं, ओपी पहले से ही यह कर रहा है यदि आप कोड को पढ़ने के लिए परेशान हैं। –

+0

तो यह काम करता है, लेकिन, इसे काम करने के लिए मुझे 6 बार फ़ायरफ़ॉक्स का आकार बदलना होगा। आईई एक गड़बड़ है। मैंने उन परिवर्तन किए। यह सहायक है, लेकिन, यह फ़ायरफ़ॉक्स की तरह दिख रहा है और विशेष रूप से आईई को बहुत अधिक परेशानी का आकार बदल रहा है। अब मैं सोच रहा हूं कि मैं अपनी मूल योजना के साथ रहना चाहता हूं और छवि मानचित्र बटनों की जगह लेने के लिए केवल अर्ध-सटीक स्थित divs का उपयोग कर रहा हूं। डॉन। मैं इस बारे में सोच रहा हूं हालांकि और यदि मैं कभी भी आउंगा और जवाब दूंगा तो मैं इसे पोस्ट करूंगा। आपकी मदद लोगों के लिए धन्यवाद। – Kozy

+0

यहां लिंक है: http://www.whitebrickstudios.com/foghornstour/imagemap3.html – Kozy

-1

यदि आपको केवल आईएम का आकार बदलने की आवश्यकता है आयु, इस तकनीक का उपयोग करें: http://www.cssplay.co.uk/layouts/background.html

CSSPlay के लिए धन्यवाद।

+2

मुझे लगता है कि आप बिंदु danigb याद कर रहे हैं। मैं विंडो आकार बदलने पर, 'छवि मानचित्र क्षेत्र' का आकार बदलना चाहता हूं। – Kozy

+0

अब मैं समझता हूं। वास्तव में, मैंने आपका यूआरएल खोला है और यह मेरे लिए काम नहीं करता है (क्रोम)। मुझे कुछ ऐसा करना था और मैंने छवि मैप्स के बजाय divs का उपयोग करना समाप्त कर दिया और स्थिति को सेट किया: पूर्ण; और% इकाइयों में शीर्ष, बाएं, चौड़ाई और ऊंचाई। यदि आप मुझे थोड़ा और समझा सकते हैं। चीयर्स डानी – danigb

+0

अरे डेनिग, मैं divs का उपयोग करके% s के साथ छवियों को स्थान देने के लिए समाप्त हुआ। हालांकि यह भविष्य के संस्करण में छवि मानचित्रों का उपयोग करने के लिए अभी भी अच्छा होगा। मेरे पास अब तक छवि मानचित्रों के लिए यही है। http://home.comcast.net/~urbanjost/IMG/resizeimg4.html – Kozy

1

मुझे लगता है कि क्या आप चाहते हैं http://home.comcast.net/~urbanjost/semaphore.html

पर है, जहां मैं कैसे अपनी छवि मानचित्र निर्देशांक परिवर्तन जब अपनी छवि प्रदर्शन आकार परिवर्तन करने के लिए के विभिन्न उदाहरणों से पता चलता।

+0

मैंने वास्तव में कुछ में शामिल किया उन उदाहरणों में कोड। हालांकि मैं जिस समस्या में भाग गया था, वह यह था कि छवि मानचित्र 'क्लिक' जैसी घटनाओं के लिए आकार बदल जाएगा, लेकिन यह 'विंडो आकार बदलें' ईवेंट पर समायोजित नहीं होगा .-- ठीक है, आपको बस ब्राउज़र को 6 बार आकार देने के लिए आकार बदलना होगा यह काम करने के लिए। मैं उपयोग कर रहा हूँ एफएफ 3.5 क्षमा करें मेरी कड़ी को तोड़ दिया गया था, यह अब ठीक किया गया: http://www.whitebrickstudios.com/foghornstour/imagemap3.html मैं% s द्वारा तैनात divs का उपयोग करने का विकल्प चुना है, लेकिन यह ' यह एक दिन काम करने के लिए वास्तव में अच्छा हो। – Kozy

1

यह एक पुराना धागा है, लेकिन किसी भी व्यक्ति के लिए समान या समान समस्या के समाधान की तलाश करने के लिए, ImageMapster jQuery प्लगइन सबसे आसान समाधान प्रदान करता प्रतीत होता है। के रूप में अपनी छवि मानचित्र के साथ एक छवि का आकार करने के लिए इस प्रकार आप अपने आकार विधि का उपयोग कर सकते हैं (यदि वांछित जो भी आकार बदलने चेतन कर सकते हैं!):

$('img').mapster('resize', newWidth, newHeight, resizeTime); 

आप एक jsFiddle that demonstrates resizing एक छवि को ImageMapster's demo पृष्ठ पर एक लिंक मिल सकता & ब्राउज़र विंडो बदलने के जवाब में इसका नक्शा।

3

मैंने प्रत्येक घटना पर सभी मानचित्र बिंदुओं का पुनर्निर्माण करने के लिए कुछ सरल कार्य लिखा था। इसे आजमाएं

function mapRebuild(scaleValue) { 
    var map = $("#imgmap"); // select your map or for all map you can choose $("map").each(function() { map = $(this);.....}) 
    map.find("area").each(function() { // select all areas 
     var coords = $(this).attr("coords"); // extract coords 
      coords = coords.split(","); // split to array 
     var scaledCoords = ""; 
     for (var coord in coords) { // rebuild all coords with scaleValue 
       scaledCoords += Math.floor(coords[coord] * scaleValue) + ","; 
      } 
     scaledCoords = scaledCoords.slice(0, -1); // last coma delete 
     $(this).attr("coords", scaledCoords); // set new coords 
     }); 
    } 

स्केल वैल्यू को पुराने विन्डोविड्थ/न्यूविंडोविड्थ के रूप में गणना की जा सकती है। बेशक आपको विंडो आकार बदलने पर पुरानीविंडोविड्थ का मान रखना होगा। शायद मेरा समाधान समय पर नहीं, लेकिन मुझे उम्मीद है कि यह किसी के लिए उपयोगी है

+1

+1 मैं इस फ़ंक्शन का उपयोग कर रहा हूं, एक आकर्षण की तरह काम करता है। लेकिन मैंने विंडो चौड़ाई का उपयोग करने के बजाय 'img.width/img.naturalWidth' का उपयोग किया। इस तरह मुझे खाते में कोई अतिरिक्त सीमा, मार्जिन, पैडिंग आदि लेने की आवश्यकता नहीं थी। –

+1

मैंने इसे थोड़ा सा lib में विस्तारित किया है, जो छवि को आकार देने के रूप में काम कर रहा है और एक्स और वाई के साथ अलग स्केलिंग के साथ भी copes। यह आपके लिए स्केलिंग मान भी काम करता है। https://github.com/davidjbradshaw/imagemap-resizer –

0

विक्टर के उत्तर के एक संशोधित संस्करण के रूप में, यह संस्करण एकाधिक आकारों को संभाल सकता है। यह किसी भी भविष्य के आकार के मुकाबले तुलना के लिए शुरुआती मूल्यों को संग्रहीत करता है। यह waitForFinalEvent का भी उपयोग करता है, इसलिए यह आकार बदलने पर अधिक से अधिक नहीं चलता है।



    var mapImg = $('#mapImg'); 
    var naturalWidth = 1200; // set manually to avoid ie8 issues 
    var baseAreas = new Array(); 
    var scaleValue = mapImg.width()/naturalWidth; 

    $(window).resize(function() { 
     waitForFinalEvent(function() { 
      scaleValue = mapImg.width()/naturalWidth; 
      mapRebuild(scaleValue); 
     }, 500, 'resize-window'); 
    }); 

    function mapRebuild(scaleValue) { 
     var map = $("#imgMap"); 
     var mapareas = map.find('area'); 
     if (baseAreas.length == 0) { 
      mapareas.each(function() { 
       baseAreas.push($(this).attr('coords')); // set initial values 
      }); 
     } 
     mapareas.each(function(index) { 
      var coords = baseAreas[index]; // use the corresponding base coordinates   
      coords = coords.split(',');  
      var scaledCoords = ''; 
      for (var coord in coords) { 
       scaledCoords += Math.floor(coords[coord] * scaleValue) + ','; 
      } 
      scaledCoords = scaledCoords.slice(0, -1); 
      $(this).attr('coords', scaledCoords); 
     }); 
    } 

    mapRebuild(scaleValue); // initial scale 

संबंधित मुद्दे