I have one image map with 300-400 poly areas which on event "onclick" shoud highlight that area and get some data etc... When page is loaded (my images are kinda big, 3-5MB) so I resized those imagemaps using davidjbradshaw/image-map-resizer plugin. When I started to implement highlight method, everything worked fine, but after zoom in/out of image my poly cords are messed up. If I remove highlight option and zoom in/out my poly cords are resized to proper image size.
JS code for resizing (working correctly)
$( document ).ready(function() {
imageMapResize();
});
function ZoomIn () {
$("img").animate({
height: '+=200',
width: '+=200'
}, 1000, function() {
imageMapResize();
});
}
function ZoomOut () {
$("img").animate({
height: '-=200',
width: '-=200'
}, 1000, function() {
imageMapResize();
});
}
JS code for resizing/highlight (not working correctly)
$( document ).ready(function() {
imageMapResize();
$('img[usemap]').maphilight();
});
function ZoomIn () {
$("img").animate({
height: '+=200',
width: '+=200'
}, 1000, function() {
imageMapResize();
$('img[usemap]').maphilight();
});
}
function ZoomOut () {
$("img").animate({
height: '-=200',
width: '-=200'
}, 1000, function() {
imageMapResize();
$('img[usemap]').maphilight();
});
}
Without zoom in/out imageresizer and highlight works perfect.

After zoom in/out

What am I doing wrong?
What am I doing wrong?
Nothing, as I could see the code.
I think the problem is with the jQuery.maphilight() plugin itself, which apparently doesn't support responsive scaling, yet.
So instead of trying to fix the problem/issue, or while waiting for the author to fix it, you might want to consider using jQuery.mapster().
Working Example
$( document ).ready(function() {
$('img[usemap]').mapster({
fill: true,
fillColor: '000000',
fillOpacity: 0.2,
stroke: true,
strokeColor: 'ff0000',
strokeOpacity: 1,
strokeWidth: 1,
fade: true
});
});
function ZoomIn() {
$("img").animate({
height: '+=200',
width: '+=200'
}, 1000, function() {
$(this).mapster('resize', $(this).width(), $(this).height());
});
}
function ZoomOut() {
$("img").animate({
height: '-=200',
width: '-=200'
}, 1000, function() {
$(this).mapster('resize', $(this).width(), $(this).height());
});
}
Demo: http://jsfiddle.net/mt5pynn8/
Demo: http://jsfiddle.net/mt5pynn8/1/
Additional Notes
jQuery.mapster() does not support jQuery version 3, and secondly, the plugin was last updated in 2013.. (But it still works pretty well.)
UPDATE
jQuery.mapster() comes with a resize feature; hence imageMapResize() is not necessary. Note though, that the resize functionality is not perfect as I've tested it. Neither imageMapResize() nor jQuery.mapster().
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With