Create A Map With Clickable Provinces/states Using SVG, HTML/CSS, ImageMap


Answer :

jQuery plugin for decorating image maps (highlights, select areas, tooltips):



http://www.outsharked.com/imagemapster/



Disclosure: I wrote it.



Sounds like you want a simple imagemap, I'd recommend to not make it more complex than it needs to be. Here's an article on how to improve imagemaps with svg. It's very easy to do clickable regions in svg itself, just add some <a> elements around the shapes you want to have clickable.



A couple of options if you need something more advanced:




  • http://jqvmap.com/

  • http://jvectormap.com/

  • http://polymaps.org/



I think it's better to divide my answer to 2 parts:






A-Create everything from scratch (using SVG, JavaScript, and HTML5):




  1. Create a new HTML5 page

  2. Create a new SVG file, each clickable area (province) should be a separate SVG Polygon in your SVG file,
    (I'm using Adobe Illustrator for creating SVG files but you can find many alternative software products too, for example Inkscape)

  3. Add mouseover and click events to your polygons one by one

    <polygon points="200,10 250,190 160,210" style="fill:lime;stroke:purple;stroke-width:1" 
    onmouseover="mouseOverHandler(evt)"
    onclick="clickHandler(evt)" />

  4. Add a handler for each event in your JavaScript code and add your desired code to the handler

    function mouseOverHandler(evt) {};
    function clickHandler(evt) {};

  5. Add the SVG file to your HTML page (I prefer inline SVG but you can use linked SVG file too)

  6. Upload the files to your server






B-Use a software like FLDraw Interactive Image Creator (only if you have a map image and want to make it interactive):




  1. Create an empty project and choose your map image as your base image when creating the new project

  2. Add a Polygon element (from the Shape menu) for each province

  3. For each polygon double click it to open the Properties window where you can choose an event type for mouse-over and click,
    also change the shape opacity to 0 to make it invisible

  4. Save your project and Publish it to HTML5, FLDraw will create a new folder that contains all of the required files for your project that you can upload to your server.






Option (A) is very good if you are programmer or you have someone to create the required code and SVG file for you,
Option (B) is good if you don't want to hire someone or spend your own time for creating everything from scratch



You have some other options too, for example using HTML5 Canvas instead of SVG, but it's not very easy to create a Zoomable map using HTML5 Canvas,
maybe there are some other ways too that I'm not aware of.



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable