Mapa w jVectorMap
W dzisiejszym artykule pokażę ciekawą bibliotekę do wstawiania interaktywnych map na stronę www - jVectorMap. Wstawienie mapy z domyślnymi ustawieniami jest bardzo proste. Wystarczy pobrać bibliotekę oraz kod js wybranej mapy (u mnie jest to mapa świata).
<!DOCTYPE html> <html> <head> <title>jVectorMap demo</title> <link rel="stylesheet" href="jquery-jvectormap-1.2.2.css" type="text/css" media="screen"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="jquery-jvectormap-1.1.1.min.js"></script> <script src="jquery-jvectormap-world-mill-en.js"></script> </head> <body> <div id="world-map" style="width: 1024px; height: 512px"></div> <script> $(function(){ $('#world-map').vectorMap(); }); </script> </body> </html>Dodamy teraz dodatkowe atrybuty. Na początek określimy kolor kraju po najechaniu (hover).
$(function(){ $('#world-map').vectorMap({ regionStyle: { hover: { fill: '#7dd1db' } } }); });Teraz dodamy zaznaczenie dla wybranych krajów. Podamy też jego kolor.
$(function(){ $('#world-map').vectorMap({ regionStyle: { hover: { fill: '#c6f9ff' }, selected: { fill: '#41b6c4' } }, selectedRegions: ['PL','DE','ES'] }); });Wstawimy teraz kilka markerów oraz określimy ich wygląd.
$(function(){ var markers = [ {latLng: [39.4704312285264, -0.375244210156211], name: 'Valencia'}, {latLng: [41.39483302189776, 2.148767850000013], name: 'Barcelona'}, {latLng: [49.295855894306264, 19.950186629980408], name: 'Zakopane'} ]; $('#world-map').vectorMap({ regionStyle: { hover: { fill: '#c6f9ff' }, selected: { fill: '#41b6c4' } }, selectedRegions: ['PL','DE','ES'], markerStyle: { initial: { fill: '#F8E23B', stroke: '#383f47', r: 5 } }, markers: markers }); });Rozbudujemy mapę aby po kliknięciu na marker pojawiało się okienko ze zdjęciem tego miejsca, a po kliknięciu na kraj okienko ze zdjęciami z tego kraju (zdjęcia zaczerpnęłam z serwisu sxc.hu). Kod wygląda następująco. Oprócz swóch funkcji obsługujących zdarzenia dodałam też trochę css.
$(function(){ var markers = [ {latLng: [39.4704312285264, -0.375244210156211], name: 'Valencia'}, {latLng: [41.39483302189776, 2.148767850000013], name: 'Barcelona'}, {latLng: [49.295855894306264, 19.950186629980408], name: 'Zakopane'} ]; $('#world-map').vectorMap({ regionStyle: { hover: { fill: '#c6f9ff' }, selected: { fill: '#41b6c4' } }, selectedRegions: ['PL','DE','ES'], markerStyle: { initial: { fill: '#F8E23B', stroke: '#383f47', r: 5 } }, markers: markers, onRegionClick: function(e, code) { $('#box_'+code).show(); }, onMarkerClick: function(e, code) { var pos = $('circle[data-index="'+code+'"]').position(), top = pos.top, left = pos.left; $('#cities img').hide(); $('#cities img:eq('+code+')').css({'left': left, 'top': top}).show(); } }); $('.close').on('click', function() { $(this).parent().hide(); return false; }); $('#cities img').on('click', function() { $(this).hide(); return false; }); });Demo mapy