<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DU4ARX0_cCp7ImA9WhFSFk4.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082</id><updated>2013-06-19T13:32:24.348+03:00</updated><category term="amMap" /><category term="amCharts" /><category term="amCharts for WPF" /><title>amCharts &amp; amMap Blog</title><subtitle type="html">amCharts &amp;amp; amMap Blog</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.amcharts.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.amcharts.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default?start-index=11&amp;max-results=10&amp;redirect=false&amp;v=2" /><author><name>Alan Mendelevich</name><uri>http://www.blogger.com/profile/06346906132949059862</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="16" src="http://4.bp.blogspot.com/_FUP2Nv3Y6Sk/TN00ygU-tMI/AAAAAAAAEiI/TzmmB1fhAKw/S220/ailon_photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>262</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>10</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/amcharts" /><feedburner:info uri="amcharts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>amcharts</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CkQEQXYzeip7ImA9WhBUGUk.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-1055991173015247607</id><published>2013-05-07T18:23:00.001+03:00</published><updated>2013-05-07T18:25:00.882+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-07T18:25:00.882+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>Extraordinary game made by developers of amCharts</title><content type="html">&lt;p&gt;Well, you might say it’s off-topic, and yes, it is, but we don’t feel very bad by posting it. Our lead developer, Antanas, developed a game for iOS/Android, called The Howler. And as it is really awesome, we dare to promote it here. &lt;a href="https://itunes.apple.com/us/app/the-howler/id621401129?ls=1&amp;amp;mt=8"&gt;Download for iOS&lt;/a&gt; or &lt;a href="http://www.amazon.com/Antanas-Marcelionis-The-Howler/dp/B00CGK71B8/"&gt;Android&lt;/a&gt;. &lt;img title="chartboostbig" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="chartboostbig" src="http://lh5.ggpht.com/-RYN7PrmrKpU/UYkcyhYhV7I/AAAAAAAACiw/SUObPjLREyA/chartboostbig%25255B6%25255D.jpg?imgmax=800" width="621" height="466"&gt;&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/1055991173015247607?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/1055991173015247607?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/0lYAcGyrpj0/extraordinary-game-made-by-developers.html" title="Extraordinary game made by developers of amCharts" /><author><name>Antanas</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-RYN7PrmrKpU/UYkcyhYhV7I/AAAAAAAACiw/SUObPjLREyA/s72-c/chartboostbig%25255B6%25255D.jpg?imgmax=800" height="72" width="72" /><feedburner:origLink>http://blog.amcharts.com/2013/05/extraordinary-game-made-by-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYEQH45fCp7ImA9WhBXE08.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-2050808347617260943</id><published>2013-03-26T20:21:00.001+02:00</published><updated>2013-03-26T20:21:41.024+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-26T20:21:41.024+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><title>JavaScript Charts / JavaScript Stock Charts 2.10.0 Released</title><content type="html">&lt;p&gt;Good news. We have just released the new versions 2.10.0 of both JavaScript Charts and JavaScript Stock Charts. [ &lt;a href="http://www.amcharts.com/download/"&gt;Download&lt;/a&gt; | &lt;a href="http://docs.amcharts.com/"&gt;Reference&lt;/a&gt; ]&lt;/p&gt; &lt;p&gt;This version features mostly functionality that was suggested by amCharts users. Thanks, guys and gals!&lt;/p&gt; &lt;p&gt;Here’s what’s new:&lt;/p&gt; &lt;h2&gt;New Features&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;categoryFunction&lt;/strong&gt; property added to &lt;strong&gt;CategoryAxis&lt;/strong&gt;. It specifies a method that returns the value that should be used as &lt;strong&gt;categoryValue&lt;/strong&gt; for current item. If this property is set, the return value of the custom data function takes precedence over &lt;strong&gt;categoryField&lt;/strong&gt;. When a chart calls this method, it passes category value, data item from chart's data provider and reference to &lt;strong&gt;categoryAxis&lt;/strong&gt;: &lt;em&gt;categoryFunction(category, dataItem, categoryAxis);&lt;/em&gt;&lt;br&gt;&lt;br&gt;This method can be used both when category axis parses dates and when it doesn't. If axis parses dates, your &lt;strong&gt;categoryFunction&lt;/strong&gt; should return Date object.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;labelFunction&lt;/strong&gt; added to &lt;strong&gt;AxisBase&lt;/strong&gt;. You can use it to format both Value and Category axis labels. If this function is set for &lt;strong&gt;ValueAxis&lt;/strong&gt;, it is called and these parameters are passed: &lt;em&gt;labelFunction(value, valueText, valueAxis);&lt;/em&gt;&lt;br&gt;&lt;br&gt;Where value is numeric value, &lt;strong&gt;valueText&lt;/strong&gt; is formatted string and &lt;strong&gt;valueAxis&lt;/strong&gt; is a reference to &lt;strong&gt;ValueAxis&lt;/strong&gt; object.&lt;br&gt;&lt;br&gt;If this function is set for &lt;strong&gt;CategoryAxis&lt;/strong&gt;, then it is called with the following parameters passed:&lt;/li&gt; &lt;ul&gt; &lt;li&gt;if dates are not parsed: &lt;em&gt;labelFunction(valueText, serialDataItem, categoryAxis)&lt;/em&gt;&lt;/li&gt; &lt;li&gt;if dates are parsed: &lt;em&gt;labelFunction(valueText, date, categoryAxis)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;fontSize&lt;/strong&gt; property added to &lt;strong&gt;Guide&lt;/strong&gt;.&lt;br&gt;&lt;strong&gt;position&lt;/strong&gt; property added to &lt;strong&gt;Guide&lt;/strong&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;useMarkerColorForValues&lt;/strong&gt; property added to &lt;strong&gt;AmLegend&lt;/strong&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;rightClickSlice&lt;/strong&gt; event added to &lt;strong&gt;AmPieChart&lt;/strong&gt;.&lt;/li&gt; &lt;li&gt;Some minor bugs fixed.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;STOCK CHART EXCLUSIVES&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;usePeriod&lt;/strong&gt; added to &lt;strong&gt;ChartScrollbarSettings&lt;/strong&gt;. This is very important feature for those, who work with large data sets. You can tell &lt;strong&gt;ChartScrollbar&lt;/strong&gt; what period it should use for it's graph and save a lot of time for rendering of this graph. For example, if your &lt;strong&gt;minPeriod&lt;/strong&gt; is "DD" (days), set &lt;strong&gt;usePeriod&lt;/strong&gt; = "WW" (weeks) and you will have 7 times less data points in scrollbar's graph.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;balloonColor&lt;/strong&gt; added to &lt;strong&gt;StockEventsSettings.&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;Data parsing performance increased!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Make sure you update and make use of the new, especially performance-enhancing, features!&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/2050808347617260943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/2050808347617260943?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/IaXesa3-bSs/javascript-charts-javascript-stock.html" title="JavaScript Charts / JavaScript Stock Charts 2.10.0 Released" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2013/03/javascript-charts-javascript-stock.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4NR3k8fCp7ImA9WhBXE08.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-3493860085597621813</id><published>2013-03-26T20:02:00.001+02:00</published><updated>2013-03-26T20:03:16.774+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-26T20:03:16.774+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>JavaScript Maps 3.2.0 Released</title><content type="html">&lt;h2&gt;&lt;strong&gt;IMPORTANT CHANGE IN MAP AREA IDs&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt;All included maps were updated to follow ISO country and region codes. All world maps use two-digit ISO codes. All country-level maps use country code dash region code notation, i.e. US-AK. Please note that this is different from the codes we had previously which used underscores.&lt;/p&gt; &lt;p&gt;Map files for consistency were also renamed to correspond to the map entity names, i.e. usaLow.js and AmCharts.maps.usaLow.&lt;/p&gt; &lt;h2&gt;NEW FEATURES&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;lines have bigger hit area;&lt;/li&gt; &lt;li&gt;selectedLabelColor property added to MapImage and ImagesSettings;&lt;/li&gt; &lt;li&gt;balloonLabelFunction added to AmMap;&lt;/li&gt; &lt;li&gt;allowClickOnSelectedObject added to AmMap, default value true.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;FIXES&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;lines and some other objects had hand cursor even if they were not clickable.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;[ &lt;a href="http://www.ammap.com/download/"&gt;Download&lt;/a&gt; ]&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3493860085597621813?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3493860085597621813?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/FEMQRDfDZ8c/javascript-maps-32-released.html" title="JavaScript Maps 3.2.0 Released" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2013/03/javascript-maps-32-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAMQ3s-fip7ImA9WhBREUg.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-1219151013046264010</id><published>2013-03-01T17:13:00.001+02:00</published><updated>2013-03-01T17:13:02.556+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-01T17:13:02.556+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><title>New 2.9.x version of JavaScript Charts and JavaScript Stock Charts released</title><content type="html">&lt;p&gt;In the past few weeks we had a cluster of important releases throughout our JavaScript charting product line. Here’s the quite lengthy scoop of what’s new and hot: (brace yourselves – we’re gonna throw a lot of letters at you)&lt;/p&gt; &lt;h4&gt;New features:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;AxisBase.minGap&lt;/em&gt; property added. It allows to set the minimum size of interval between grid lines, works only for horizontal axis and only when &lt;em&gt;autoGridCount&lt;/em&gt; is set to true.&lt;/li&gt; &lt;li&gt;&lt;em&gt;“selected”&lt;/em&gt; event of &lt;em&gt;ChartCursor&lt;/em&gt; was added. It is fired when &lt;em&gt;selectWithoutZooming&lt;/em&gt; is set to true and&lt;br&gt;user makes selection.&lt;/li&gt; &lt;li&gt;&lt;em&gt;labelColorField&lt;/em&gt; added to &lt;em&gt;AmGraph&lt;/em&gt;, it allows setting different color for individual data labels.&lt;/li&gt; &lt;li&gt;&lt;em&gt;forceShowField&lt;/em&gt; added to &lt;em&gt;CategoryAxis&lt;/em&gt;. It allows setting which of the categories should always be displayed. Works only when &lt;em&gt;categoryAxis.parseDates = false&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;rightClickGraphItem&lt;/em&gt; event added to &lt;em&gt;AmCoordinateChart&lt;/em&gt;.&lt;/li&gt; &lt;li&gt;&lt;em&gt;"changed"&lt;/em&gt; event of chart cursor has a new property, called &lt;em&gt;mostCloseGraph&lt;/em&gt;. It is set if you are using &lt;em&gt;chartCursor.oneBalloonOnly = true&lt;/em&gt;.&lt;/li&gt; &lt;li&gt;&lt;em&gt;labelRadiusField&lt;/em&gt; property added to &lt;em&gt;AmPieChart&lt;/em&gt;. It allows specifying the distance from pie to data label manually. Note, if you set &lt;em&gt;labelRadiusField&lt;/em&gt;, the chart won't try to arrange labels so that they won't overlap.&lt;/li&gt; &lt;li&gt;Default behavior change: when setting zooming date-based chart, you have to set exact &lt;em&gt;"to"&lt;/em&gt; date. For example, if you want the chart to display one day only, set from date as 2012,1,1 (first of February) and the to date as new Date(2012,1,2) or new Date(2012,1,1,23,59,59). Previously you could set the same date for start and end dates and the chart used to select one &lt;em&gt;"minPeriod"&lt;/em&gt; automatically, however this caused a lot of problems for charts displaying monthly or yearly data.&lt;/li&gt; &lt;li&gt;&lt;em&gt;AmCharts.clear&lt;/em&gt; method added. Call this method if you want completely to remove all charts from a page.&lt;/li&gt; &lt;li&gt;Above property added to Guide. If you set it to true, guides will be displayed above graphs.&lt;/li&gt; &lt;li&gt;You can set a customly created div element as a container of your legend. To do this, you should pass id or reference of the div in this method: &lt;em&gt;chart.addLegend(legend, divID)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Bug fixes:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;IE used to hide legend of pie chart after &lt;em&gt;validateNow()&lt;/em&gt; method was called.&lt;/li&gt; &lt;li&gt;Memory leak fixed.&lt;/li&gt; &lt;li&gt;Fixed XY chart external zoom (with &lt;em&gt;valueAxis.zoomToValues()&lt;/em&gt; method).&lt;/li&gt; &lt;li&gt;Problem with lines not visible on XP+IE8 fixed.&lt;/li&gt; &lt;li&gt;Last item was not displayed if &lt;em&gt;minPeriod&lt;/em&gt; was bigger than day.&lt;/li&gt; &lt;li&gt;Switch of legend marker was in wrong position when marker size was quite small.&lt;/li&gt; &lt;li&gt;&lt;em&gt;validateData()&lt;/em&gt; method caused error when &lt;em&gt;fillToGraph&lt;/em&gt; property was set.&lt;/li&gt; &lt;li&gt;If &lt;em&gt;valueAxis.minimum&lt;/em&gt; was set and values were smaller than this minimum, columns were not displayed.&lt;/li&gt; &lt;li&gt;&lt;em&gt;align&lt;/em&gt; property wasn't working when using external container for the legend.&lt;/li&gt; &lt;li&gt;Balloon could be wrongly positioned in &lt;em&gt;marginTop&lt;/em&gt; style was added directly to &amp;lt;html&amp;gt; element.&lt;/li&gt; &lt;li&gt;&lt;em&gt;chart.animateAgain()&lt;/em&gt; worked only if &lt;em&gt;validateNow()&lt;/em&gt; method was called after.&lt;/li&gt; &lt;li&gt;In some specific cases scrollbar could act incorrectly on IE8/IE7.&lt;/li&gt; &lt;li&gt;When &lt;em&gt;panEventsEnabled&lt;/em&gt; was set to true, balloons over bullets were not shown.&lt;/li&gt; &lt;li&gt;Text in balloons was not properly vertically aligned if &lt;em&gt;verticalSpacing&lt;/em&gt; was set to some different than default value.&lt;/li&gt; &lt;li&gt;Balloon wasn't positioned properly if chart was in a scrollable div.&lt;/li&gt; &lt;li&gt;&lt;em&gt;“init”&lt;/em&gt; event wasn't fired by &lt;em&gt;AmPieChart&lt;/em&gt;.&lt;/li&gt; &lt;li&gt;Step line's corners sometimes were not perfect (one extra pixel could be added in the end of horizontal line)&lt;/li&gt; &lt;li&gt;You couldn't change &lt;em&gt;panEventsEnabled&lt;/em&gt; of &lt;em&gt;AmChart&lt;/em&gt; class after the chart was initialized.&lt;/li&gt; &lt;li&gt;You couldn't change legend's position after the chart was initialized.&lt;/li&gt; &lt;li&gt;Step line chart was not correctly filled if Value axis was of some stacked type.&lt;/li&gt; &lt;li&gt;Some other minor bugs fixed.&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Changes related to Stock Chart only:&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;If user changes date in period selector, the new date is applied right when he clicks away from the&lt;br&gt;input field.&lt;/li&gt; &lt;li&gt;&lt;em&gt;"rendered"&lt;/em&gt; event added to &lt;em&gt;AmStockChart&lt;/em&gt;. Fired each time the chart is rebuild.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Make sure you &lt;a href="http://www.amcharts.com/download/"&gt;grab the latest version&lt;/a&gt;.&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/1219151013046264010?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/1219151013046264010?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/GHgxu6-cLFE/new-29x-version-of-javascript-charts.html" title="New 2.9.x version of JavaScript Charts and JavaScript Stock Charts released" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2013/03/new-29x-version-of-javascript-charts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCQ3o8eCp7ImA9WhBSGEs.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-7861444953755342911</id><published>2013-02-26T09:37:00.001+02:00</published><updated>2013-02-26T09:37:42.470+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-26T09:37:42.470+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>Visited Countries and Visited States widgets updated</title><content type="html">&lt;p&gt;Just wanted to let you know that our underappreciated &lt;a href="http://www.ammap.com/visited_countries/"&gt;Visited Countries&lt;/a&gt; and &lt;a href="http://www.ammap.com/visited_states/"&gt;Visited States&lt;/a&gt; embeddable widgets were updated with the latest JavaScript version of amMap and are eagerly waiting for your love.&lt;/p&gt; &lt;p&gt;Both websites can be used to easily create a code for transparent copy-and-paste inclusion into any page.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;No programming skills required.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Just select the countries or states you have set your foot on, tweak appearance to match that of your website and let the bragging begin.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ammap.com/visited_countries/"&gt;&lt;img title="Screenshot-2013-02-26_09.34.47" style="display: inline" alt="Screenshot-2013-02-26_09.34.47" src="http://lh3.ggpht.com/-NRiYBzpZG3A/USxmRPJuUGI/AAAAAAAAwMQ/yQxzgOZndfk/Screenshot-2013-02-26_09.34.47%25255B5%25255D.png?imgmax=800" width="572" height="480"&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/7861444953755342911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/7861444953755342911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/ndV3QMslEnE/visited-countries-and-visited-states.html" title="Visited Countries and Visited States widgets updated" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-NRiYBzpZG3A/USxmRPJuUGI/AAAAAAAAwMQ/yQxzgOZndfk/s72-c/Screenshot-2013-02-26_09.34.47%25255B5%25255D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://blog.amcharts.com/2013/02/visited-countries-and-visited-states.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUDSXY6eCp7ImA9WhNaFkk.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-4896068156877383485</id><published>2013-01-31T16:24:00.001+02:00</published><updated>2013-01-31T16:24:38.810+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-31T16:24:38.810+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>Creating custom maps for JavaScript amMap</title><content type="html">&lt;p&gt;You can create your own custom maps and use them with amMap – a tool for creating interactive JavaScript maps for web sites. AmMap uses SVG maps. It can load SVG file or you can include JavaScript file with SVG data converted to JSON. This option is better as loading SVG might be problematic, depending on user browser and sometimes on your server.&lt;/p&gt; &lt;h3&gt;SVG structure&lt;/h3&gt; &lt;p&gt;AmMap will not work with any SVG map, it should meet some structure requirements. To understand SVG structure, open any of the maps available in ammap/maps/svg/ folder with some text editor. As you see, the structure which amMap understands is this:&lt;/p&gt;&lt;pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;&amp;lt;svg&amp;gt;
   &amp;lt;g&amp;gt;
      &amp;lt;path/&amp;gt;
   &amp;lt;/g&amp;gt;
&amp;lt;/svg&amp;gt;&lt;/pre&gt;
&lt;p&gt;You can have any number of "paths” – areas or countries, you can call them as you wish. All of them should be in one group – between &amp;lt;g&amp;gt; and &amp;lt;/g&amp;gt; nodes. This is the main rule of SVG suitable for amMap. Deeper levels of groups will be ignored, if you won’t group paths, they will also be ignored, all other elements except paths will be ignored. Each path should have at least "id” attribute and “d” attribute. “d” attribute contains coordinates of your areas. Optionally it can have “title” attribute. “class” attribute is only used when viewing this SVG file directly on browser.&lt;/p&gt;
&lt;p&gt;Most likely you also noticed &amp;lt;defs&amp;gt; node with some info in it. &amp;lt;defs&amp;gt; has &amp;lt;style&amp;gt; with some colors set. These colors are only used when viewing SVG file in browser, amMap doesn’t care about them. However it cares about &amp;lt;amcharts:ammap&amp;gt; node with projection and boundary latitudes/longitudes. AmMap will work even without &amp;lt;defs&amp;gt; node, but you won’t be able to use real life latitudes/longitudes without it. We will come back to this later.&lt;/p&gt;
&lt;p&gt;What if you have SVG file with some other structure? Well, it won’t work with amMap. You should modify your SVG so that it would meet amMap structure.&lt;/p&gt;
&lt;h3&gt;Creating SVG from GIS data&lt;/h3&gt;
&lt;p&gt;Note, the following tutorials might not work with all GIS data. You might need to do some manual work.&lt;/p&gt;
&lt;p&gt;In most cases you won’t have SVG map which you can modify, but you might have raw GIS data. There are plenty of resources with free GIS data online, &lt;a href="http://www.naturalearthdata.com/downloads/"&gt;Natural Earth Data&lt;/a&gt; is one of the best. Let’s download small scale &lt;a href="http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip"&gt;World map with county borders&lt;/a&gt; and unzip the package. You’ll find some files there with extensions like .shp, .shx etc. We need to convert them to SVG format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 1 – use &lt;/strong&gt;&lt;a href="http://indiemapper.com/app/"&gt;&lt;strong&gt;Indie mapper&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; online service &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This option doesn’t require any expensive software, however you will miss some of the possibilities.&lt;/p&gt;
&lt;p&gt;Navigate to &lt;a href="http://indiemapper.com/app/"&gt;the mapper app&lt;/a&gt; and click on “Browse for KML/SHP/GPX” button and browse to the folder where you unzipped GIS data, select .shp file from there. Then click on “Browse for DBF” file and select the .dbf file from the same folder and click “Load”. Once the map is loaded, you can go to “projection” and set projection to the one you wish. If you wish to use real life longitudes/latitudes with your map, you should choose “Mercator”. Next, click “export” button, select “layered SVG”, select “include data attributes in SVG” option, type some name and click “Generate file” button and “Export to your Computer” a bit later. Now you have SVG file – open it with your browser, you should see the map. Open the file with text editor – the structure is quite close to what we need, it only has some unnecessary information. We need the second &amp;lt;g&amp;gt; node with all data in it (you can try to delete the other nodes and open file in browser again to be sure you left the countries only). Delete all atributes of &amp;lt;g&amp;gt; except “transform”. Then copy everything between &amp;lt;g&amp;gt; and &amp;lt;/g&amp;gt; (including). Now you can scroll down to the using amMap parser section or study the second option.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 2 – use &lt;a href="http://www.avenza.com/mapublisher"&gt;Avenza map publisher&lt;/a&gt; and &lt;a href="http://www.adobe.com/illustrator"&gt;Adobe Illustrator&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This method it is quite expensive, as requires both Adobe illustrator and Avenza plugin. However you can try both of them for free. This will also require some manual work.&lt;/p&gt;
&lt;p&gt;Install Adobe illustrator and then Avenza map publisher for illustrator. Launch illustrator, click File-&amp;gt;Import Map Data –&amp;gt; Advanced. In the window opened, click “Add”, then “Browse” near “Dataset”, locate your .shp file, click “OK”. Then select “Create new” radio button, click “editor” and click on Destination Coordinate System link. Locate WGS84 / World Mercator system (you can use any other system if you don’t care about real life latitudes/longitudes). Click OK for 3 times and you should see the map now.&lt;/p&gt;
&lt;p&gt;The dark side: We couldn’t find a way to export id and title of an object to SVG (let us know if you’ll find it). So the only way to keep id/title is to go to layers and manually name each layer. You should name them like this: US#USA or BR#Brasil – our map parser will understand this format. &lt;/p&gt;
&lt;p&gt;Click file-&amp;gt;Save As and save the map as SVG. Open the saved file in your browser – you should see a map. Now open it with some text editor – you’ll see some empty &amp;lt;g&amp;gt; nodes and one should have a lot of &amp;lt;polygon&amp;gt; and &amp;lt;path&amp;gt; elements. This is the one we need. Copy all this node (including &amp;lt;g&amp;gt; and &amp;lt;/g&amp;gt; to the clipboard and proceed to the next part of the tutorial.&lt;/p&gt;
&lt;h3&gt;Using amMap map parser to prepare SVG for amMap&lt;/h3&gt;
&lt;p&gt;We have prepared &lt;a href="http://extra.ammap.com/parser/"&gt;a map parser&lt;/a&gt; - tool which parses data generated both by Indie mapper or Adobe illustrator. It also reduced file size a lot. It is always in a “beta” stage, so sorry for some bugs which might appear. Paste everything you copied to the left window, enter map name, variable name latitudes/longitudes of the map borders) and click “parse” button at the bottom. If you did everything right (cleaning &amp;lt;g&amp;gt; from unnecessary elements is crucial) then a amMap ready SVG code and SVG compiled to JSON should appear in the output windows. Copy (by clicking copySVG button) the generated SVG and try to view it in a browser. If not all the map is visible, don’t worry – amMap will handle this. Copy JSON code (by clicking copy JSON button) to clipboard, paste it to an empty file and try with amMap.&lt;/p&gt;
&lt;h3&gt;Finding top, bottom latitudes and right, left longitudes&lt;/h3&gt;
&lt;p&gt;If you don’t have illustrator and Map Publisher, go &lt;a href="http://itouchmap.com/latlong.html"&gt;to this service&lt;/a&gt;, click on the map point which is most top/bottom/right/left of your map and copy latitude or longitude. This won’t be very accurate, so we recommend adding some points to your map (using amMap) and then do the fine tuning by adjusting these values.&lt;/p&gt;
&lt;p&gt;It’s a bit easier with illustrator – click on the “map info” icon of the Map publisher toolbar and move the mouse to the extremes of your map. The latitude/longitude will be displayed in a separate window. Use them when parsing your map with amMap parser.&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/4896068156877383485?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/4896068156877383485?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/7wYNQ4WkXHo/creating-custom-maps-for-javascript.html" title="Creating custom maps for JavaScript amMap" /><author><name>Antanas</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://blog.amcharts.com/2013/01/creating-custom-maps-for-javascript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUAQ38_fSp7ImA9WhNRGUo.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-3055637794493574491</id><published>2012-11-15T12:59:00.001+02:00</published><updated>2012-11-15T13:00:42.145+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-15T13:00:42.145+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><title>JavaScript feature-rich update to 2.8.0/2.8.1</title><content type="html">&lt;p&gt;We’re so fired up on adding new features and releasing updates we’ve missed the the announcement for one. Here it goes.&lt;/p&gt; &lt;p&gt;We’ve recently released a feature-rich update to 2.8.0 and subsequently to 2.8.1. [&lt;a href="http://www.amcharts.com/download/"&gt;Download&lt;/a&gt;]&lt;/p&gt; &lt;p&gt;Here’s a scoop of what’s new:&lt;/p&gt; &lt;h3&gt;2.8.1&lt;/h3&gt; &lt;h2&gt;New features:&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;hideXScrollbar&lt;/strong&gt; and &lt;strong&gt;hideYScrollbar&lt;/strong&gt; properties added to &lt;strong&gt;AmXYChart&lt;/strong&gt;. This will allow you to selectively hide vertical or horizontal scrollbars&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Stock chart-specific changes:&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;hideOutOfScopePeriods&lt;/strong&gt; property added to &lt;strong&gt;PeriodSelector&lt;/strong&gt;, with default value true. This will hide period buttons which periods are longer than data available.&lt;/li&gt; &lt;li&gt;problem with &lt;strong&gt;periodSelector&lt;/strong&gt; buttons fixed - several buttons could be marked as selected if a button's period was bigger than data available.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;2.8.0&lt;/h3&gt; &lt;h2&gt;New features:&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;In additional to Date object you can now also pass dates as timestamps.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;ChartCursor.selectWithoutZooming&lt;/strong&gt; property added which allows marking desired area with chart cursor without zooming-in. This allows subsequent handling of it via events.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;graph.fillToGraph&lt;/strong&gt; property added. This allows creating band or range graphs.&lt;br&gt;The area between graph and &lt;strong&gt;fillToGraph&lt;/strong&gt; will be filled with a color if &lt;strong&gt;graph.fillAlphas &lt;/strong&gt;is set to &amp;gt; 0 value. Works with "line" graph type only.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Bug fixes:&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Blurry lines on all browsers fixed.&lt;/li&gt; &lt;li&gt;Right/bottom grid line was hidden if &lt;strong&gt;marginRight&lt;/strong&gt;/&lt;strong&gt;marginBottom&lt;/strong&gt; were set to 0.&lt;/li&gt; &lt;li&gt;Category balloon was shifted a bit since last version.&lt;/li&gt; &lt;li&gt;Background image was incorrectly sized.&lt;/li&gt;&lt;/ul&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3055637794493574491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3055637794493574491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/xHQh4y2vS3s/javascript-feature-rich-update-to-280281.html" title="JavaScript feature-rich update to 2.8.0/2.8.1" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2012/11/javascript-feature-rich-update-to-280281.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAMQX08fSp7ImA9WhNRGU0.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-4374322948392426380</id><published>2012-11-14T12:51:00.001+02:00</published><updated>2012-11-14T17:26:20.375+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-14T17:26:20.375+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>Getting started with JavaScript Maps</title><content type="html">&lt;p&gt;JavaScript amMap is a piece of software for creating interactive maps for your web sites and applications. It’s quite different from mapping products like Google Maps, and so is its purpose. We do not provide deep-level maps like Google Maps does. We offer world map, continents map and a lot of country maps with district borders. We do not offer city maps or satellite images, our maps consist of pure country/district areas. Here are some examples of our mapping tool in use:&lt;/p&gt; &lt;p&gt;» &lt;a href="http://www.ammap.com/javascript-maps/united-states-heat-map/"&gt;United States Heat Map&lt;/a&gt;&lt;br&gt;» &lt;a href="http://www.ammap.com/javascript-maps/interactive-flight-route/"&gt;Interactive Flight Route Map&lt;/a&gt;&lt;br&gt;» &lt;a href="http://www.ammap.com/javascript-maps/drill-down/"&gt;Drill-down map&lt;/a&gt;&lt;br&gt;» &lt;a href="http://www.ammap.com/javascript-maps/grouped-countries/"&gt;Grouped countries map&lt;/a&gt;&lt;br&gt;» &lt;a href="http://www.ammap.com/javascript-maps/world-capitals-map/"&gt;World capitals map&lt;/a&gt;&lt;br&gt;» &lt;a href="http://www.ammap.com/javascript-maps/zooming-to-countries-map/"&gt;Zooming to countries map&lt;/a&gt;  &lt;p&gt;Our tool uses SVG to render maps. We do not offer VML which would be needed to support Internet Explorer browses version 8 and older. VML is simply too slow to handle this amount of vector data. Sorry legacy browser lovers ;)  &lt;p&gt;&amp;nbsp; &lt;h3&gt;Creating your first map&lt;/h3&gt; &lt;p&gt;&lt;a href="http://www.ammap.com/download/"&gt;Download&lt;/a&gt; amMap package, unzip it to some folder and copy “ammap” folder to your working directory. Now open your HTML file (I will assume that it is in the same level where you copied ammap folder). First, you should include ammap.js into header of your HTML:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="ammap/ammap.js"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;In case you are using our amcharts js file in the same page, you can insert ammap_amcharts_extension.js instead of ammap.js – this will save you ~50 kilobytes. Remember, you have to insert ammap_amcharts_extension.js&amp;nbsp; after amcharts.js (or amstock.js) file!&lt;/p&gt;
&lt;p&gt;Next, you have to insert map file too. Actually there are two ways of using maps – you can load SVG files at runtime or insert maps as .js files. We recommend inserting maps as .js files as it is much more reliable - some servers do not like SVG format. Also you will not be able to test maps without web server if you load them as SVG. &lt;/p&gt;
&lt;p&gt;To insert map file as .js file simply add this line to your HTML (after the line where you inserted ammap.js file!):&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;script src=&lt;span class="str"&gt;"ammap/maps/js/world_low.js"&lt;/span&gt; type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;You can use any other map – just go to the ammap/maps/js folder and check the available maps (we are adding new maps constantly).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Side note:&lt;/em&gt;&lt;/strong&gt; we include two versions of each map – high detail and low detail. Normally you should always use maps with “_low” suffix as they are faster and less resource-intensive. If your particular purpose calls for for greater detail and you’re willing to potentially sacrifice some performance for it, go with the “_high” version.&lt;/p&gt;
&lt;p&gt;In case you wish to load maps as SVG files – read on, we’ll cover this a bit later.&lt;/p&gt;
&lt;p&gt;Next, you should create a div which will hold your map. Add this to your HTML body:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="mapdiv"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="width: 600px; height: 400px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
Now we’ll do some JavaScripting. Below is a script with comments which should produce a simple World map:&lt;/p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;pre class="csharpcode"&gt;    &lt;span class="rem"&gt;// add all your code to this method, as this will ensure that page is loaded&lt;/span&gt;
    AmCharts.ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
        &lt;span class="rem"&gt;// create AmMap object&lt;/span&gt;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; map = &lt;span class="kwrd"&gt;new&lt;/span&gt; AmCharts.AmMap();
        &lt;span class="rem"&gt;// set path to images&lt;/span&gt;
        map.pathToImages = &lt;span class="str"&gt;"ammap/images/"&lt;/span&gt;;
        
        &lt;span class="rem"&gt;/* create data provider object&lt;/span&gt;
&lt;span class="rem"&gt;         mapVar tells the map name of the variable of the map data. You have to&lt;/span&gt;
&lt;span class="rem"&gt;         view source of the map file you included in order to find the name of the &lt;/span&gt;
&lt;span class="rem"&gt;         variable - it's the very first line after commented lines.&lt;/span&gt;
&lt;span class="rem"&gt;         &lt;/span&gt;
&lt;span class="rem"&gt;         getAreasFromMap indicates that amMap should read all the areas available&lt;/span&gt;
&lt;span class="rem"&gt;         in the map data and treat them as they are included in your data provider.&lt;/span&gt;
&lt;span class="rem"&gt;         in case you don't set it to true, all the areas except listed in data&lt;/span&gt;
&lt;span class="rem"&gt;         provider will be treated as unlisted.&lt;/span&gt;
&lt;span class="rem"&gt;        */&lt;/span&gt;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; dataProvider = {
            mapVar: AmCharts.maps.worldLow,
            getAreasFromMap:&lt;span class="kwrd"&gt;true&lt;/span&gt;                    
        }; 
        &lt;span class="rem"&gt;// pass data provider to the map object&lt;/span&gt;
        map.dataProvider = dataProvider;
    
        &lt;span class="rem"&gt;/* create areas settings&lt;/span&gt;
&lt;span class="rem"&gt;         * autoZoom set to true means that the map will zoom-in when clicked on the area&lt;/span&gt;
&lt;span class="rem"&gt;         * selectedColor indicates color of the clicked area.&lt;/span&gt;
&lt;span class="rem"&gt;         */&lt;/span&gt;
        map.areasSettings = {
            autoZoom: &lt;span class="kwrd"&gt;true&lt;/span&gt;,
            selectedColor: &lt;span class="str"&gt;"#CC0000"&lt;/span&gt;
        };
    
        &lt;span class="rem"&gt;// let's say we want a small map to be displayed, so let's create it&lt;/span&gt;
        map.smallMap = &lt;span class="kwrd"&gt;new&lt;/span&gt; AmCharts.SmallMap();
    
        &lt;span class="rem"&gt;// write the map to container div&lt;/span&gt;
        map.write(&lt;span class="str"&gt;"mapdiv"&lt;/span&gt;);               
        
    });&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Now, if you open your HTML file in a browser, you should see this: 
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-gSTJ1RVCDrE/UKN3mVwnKAI/AAAAAAAACgc/qBBeXaeso0U/s1600-h/firstMap%25255B11%25255D.png"&gt;&lt;img title="firstMap" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="firstMap" src="http://lh6.ggpht.com/-UaKBEGV_t18/UKN3nqIsh5I/AAAAAAAACgk/sI8uWsW8Ls0/firstMap_thumb%25255B7%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt; 
&lt;p&gt;Try to click on any country – the map will zoom-in on it. You can also drag, pan the map or click on a small map to move the big one to the desired position. In case you don’t see the map, check error console – most likely it will show some errors. It’s a first to-do if something is not working. 
&lt;p&gt;&amp;nbsp; &lt;h3&gt;Loading SVG maps&lt;/h3&gt;
&lt;p&gt;In case you wish to load SVG maps instead of including them as .js file, all you need to do is to change mapVar of your data provider to mapURL and specify path to the SVG map, foe example:&lt;/p&gt;&lt;pre class="csharpcode"&gt;mapURL: &lt;span class="str"&gt;"ammap/maps/svg/world_low.svg"&lt;/span&gt;,&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
However, as we mentioned, it’s not as reliable as including maps as .js files.&lt;/p&gt;
&lt;h3&gt;Manipulating areas (countries)&lt;/h3&gt;
&lt;p&gt;Let’s say we want to change color of some of the countries. This should be done by adding these countries to data provider and specifying color of your choice. Map data provider is an instance of &lt;a href="http://docs.amcharts.com/javascriptmaps/MapData"&gt;MapData object&lt;/a&gt;, check our docs to find more of what it is capable of. &lt;/p&gt;
&lt;p&gt;Each country/area has an id. For world map we use ISO country codes like US, UK, DE for id’s. For countries administrative areas we use id’s like AU_WA where AU is ISO code of the country (Australia in this case) and WA is id of the administrative area. All the available areas are listed in each map’s .js and .svg files, in JavaScript array which you can copy/paste directly to data provider. I left only some of the countries, as I don’t need them all:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; dataProvider = {
      mapVar: AmCharts.maps.worldLow,
      areas:[{id:&lt;span class="str"&gt;"AU"&lt;/span&gt;},{id:&lt;span class="str"&gt;"US"&lt;/span&gt;},{id:&lt;span class="str"&gt;"FR"&lt;/span&gt;}]                    
}; &lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Note, I deleted getAreasFromMap:&lt;span class="kwrd"&gt;true&lt;/span&gt; from data provider, as now I want all the areas except those three to be inactive. The result is this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zmRcntxSHdQ/UKN3pBudOeI/AAAAAAAACgo/aXfN9zOqPpM/s1600-h/secondMap%25255B5%25255D.png"&gt;&lt;img title="secondMap" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="secondMap" src="http://lh6.ggpht.com/-ltpzGUDSDVQ/UKN3qISKOxI/AAAAAAAACgw/I2dwbXiQOxU/secondMap_thumb%25255B3%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All the areas except listed are now grey. This color is set via &lt;a href="http://docs.amcharts.com/javascriptmaps/AreasSettings"&gt;AreasSettings&lt;/a&gt; unlistedAreasColor property. You can also control opacity, outline color and opacity of unlisted areas.&lt;/p&gt;
&lt;p&gt;The three areas we included are colored with color set via color property of &lt;a href="http://docs.amcharts.com/javascriptmaps/AreasSettings"&gt;AreasSettings&lt;/a&gt;. Check all the available properties to get impression of what else you can change. As you have correctly guessed, the settings you set for AreasSettings are applied for all listed areas, but only if you don’t set some property of the area explicitly. &lt;/p&gt;
&lt;p&gt;Each country/area object listed in your data provider is an instance of &lt;a href="http://docs.amcharts.com/javascriptmaps/MapArea"&gt;MapArea&lt;/a&gt;. Check docs to see list of available properties. Let’s say we want each of the three countries to be filled with a different color. The property responsible for this is “color” (surprise!). So we modify data provider by adding color with some HEX color code to each country:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; dataProvider = {
    mapVar: AmCharts.maps.worldLow,
    areas:[{id:&lt;span class="str"&gt;"AU"&lt;/span&gt;, color:&lt;span class="str"&gt;"#CC0000"&lt;/span&gt;},{id:&lt;span class="str"&gt;"US"&lt;/span&gt;, color:&lt;span class="str"&gt;"#00CC00"&lt;/span&gt;},{id:&lt;span class="str"&gt;"FR"&lt;/span&gt;, color:&lt;span class="str"&gt;"#0000CC"&lt;/span&gt;}]                    
}; &lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
And the result is now:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-u7Oyj_6T1nY/UKN3q7gJ3gI/AAAAAAAACg4/W2LwwayLzFM/s1600-h/thirdMap%25255B4%25255D.png"&gt;&lt;img title="thirdMap" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="thirdMap" src="http://lh4.ggpht.com/-WFrhKt6-AtE/UKN3rnX2xxI/AAAAAAAAChA/nifYs8LcZnA/thirdMap_thumb%25255B2%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can modify color, opacity, title (titles are hardcoded in a map, but you can simply change them using “title” property), add description which will popup if user clicks on a country and do a lot more. &lt;/p&gt;
&lt;h3&gt;Adding an image to a map&lt;/h3&gt;
&lt;p&gt;Let’s say I want to add some icon on the map in the place where New York City is. This will also be done via data provider, images property. Images are instances of &lt;a href="http://docs.amcharts.com/javascriptmaps/MapImage"&gt;MapImage&lt;/a&gt; object. Images can be placed in two ways – by setting it’s position using left/top/right/bottom properties or by setting latitude and longitude. If you set latitude and longitude, the image will be bound to the map position – it will move together with it. Otherwise the image will stay in the same place. As I want to mark New York City, I need to set latitude and longitude. So I went to Wikipedia and found that latitude is 40.3951 and longitude is -73.5619. &lt;/p&gt;
&lt;p&gt;MapImage has “type” property which can be set to one of the three values: circle, rectangle and bubble. I choose “bubble” this time and set its color to velvet: &lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; dataProvider = {
    mapVar: AmCharts.maps.worldLow,
    images:[{latitude:40.3951, longitude:-73.5619, type:&lt;span class="str"&gt;"circle"&lt;/span&gt;, color:&lt;span class="str"&gt;"#6c00ff"&lt;/span&gt;}]                    
}; &lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;Note, I deleted areas so that they wouldn’t steal your attention. And here is the result:&lt;/font&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;a href="http://lh3.ggpht.com/-BiWY6fkGgBc/UKN3s_NUw-I/AAAAAAAAChI/xxUXFCVqIg8/s1600-h/nyMap%25255B4%25255D.png"&gt;&lt;img title="nyMap" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="nyMap" src="http://lh5.ggpht.com/-owQ0c5xsvD4/UKN3tuRjSPI/AAAAAAAAChQ/m-vjdi5UQ6I/nyMap_thumb%25255B2%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;As you can see, there is a red circle in the place where New York City is! Most of the maps we provide are calibrated, so real world latitudes and longitudes can be used. Only some of the maps for some technical reasons can not be calibrated (for example map of US where Alaska an Hawaii are shifted so that they would be close to mainland). &lt;/p&gt;
&lt;p&gt;You can still find longitudes/latitudes (and also a lot more information required to build maps) both for calibrated and non-calibrated maps using developer mode. Check developerMode.html example in samples folder to see it in action.&lt;/p&gt;
&lt;p&gt;Now I want to change the red circle to some more interesting picture. You can load gif, png, jpg or svg files by setting imageURL for your image with path to the image. However loaded images have limitations – you can not change colors, set outline and some more. The recommended way of adding single-color images to the map would be creating variable of SVG path and setting it via svgPath property of &lt;a href="http://docs.amcharts.com/javascriptmaps/MapImage"&gt;MapImage&lt;/a&gt;. I recommend visiting &lt;a href="http://raphaeljs.com/icons/"&gt;Raphael’s icons set page&lt;/a&gt; to get SVG paths for a lot of nice icons. Simply choose the icon you like and copy the path. Then you can create variable (so you could use it more than once) and set this variable as svgPath of your image:&lt;/p&gt;&lt;pre class="csharpcode"&gt;var icon= &lt;span class="str"&gt;"M21.25,8.375V28h6.5V8.375H21.25zM12.25,28h6.5V4.125h-6.5V28zM3.25,28h6.5V12.625h-6.5V28z"&lt;/span&gt;;       
       
var dataProvider = {
    mapVar: AmCharts.maps.worldLow,
    images:[{latitude:40.3951, longitude:-73.5619, svgPath:icon, color:&lt;span class="str"&gt;"#CC0000"&lt;/span&gt;, scale:0.5, label:&lt;span class="str"&gt;"New York"&lt;/span&gt;, labelShiftY:2}]                    
}; &lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Note, I deleted type (we don’t need it anymore) and set scale to 0.5 so that the icon wouldn’t be too big, I also added “label” property with value “New York”&amp;nbsp; and adjusted label’s vertical position by 2 pixels so that it would fit better. And the result (after I manually zoomed in) is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-wj9W9Of8Xh0/UKN3usavRDI/AAAAAAAAChY/Hl50pPM5WEA/s1600-h/nyMap2%25255B4%25255D.png"&gt;&lt;img title="nyMap2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="nyMap2" src="http://lh5.ggpht.com/-v_6QcvZUc7A/UKN3v63qRnI/AAAAAAAAChk/I5JROMDuvU8/nyMap2_thumb%25255B2%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Adding some interactivity&lt;/h3&gt;
&lt;p&gt;Now I want to make the New York icon clickable and I want the map to zoom-in and display some more information when user clicks on it. MapImage has all the properties you need to do that: value set as description will be displayed in a popup window, zoomLevel will tell how much do you want to zoom-in:&lt;/p&gt;&lt;pre class="csharpcode"&gt;var icon= &lt;span class="str"&gt;"M21.25,8.375V28h6.5V8.375H21.25zM12.25,28h6.5V4.125h-6.5V28zM3.25,28h6.5V12.625h-6.5V28z"&lt;/span&gt;;       
       
var dataProvider = {
    mapVar: AmCharts.maps.worldLow,
    images:[{latitude:40.3951, longitude:-73.5619, svgPath:icon, color:&lt;span class="str"&gt;"#CC0000"&lt;/span&gt;, scale:0.5, label:&lt;span class="str"&gt;"New York"&lt;/span&gt;, labelShiftY:2, zoomLevel:5, title:&lt;span class="str"&gt;"New York"&lt;/span&gt;, description:&lt;span class="str"&gt;"New York is the most populous city in the United States and the center of the New York Metropolitan Area, one of the most populous metropolitan areas in the world."&lt;/span&gt;}]                    
}; &lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
Now, after you click on “New York” icon, the map will zoom in and display description:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-pmujebeMfsI/UKN3xEZsumI/AAAAAAAAChs/cWqHX26FArw/s1600-h/nyMap3%25255B4%25255D.png"&gt;&lt;img title="nyMap3" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="nyMap3" src="http://lh4.ggpht.com/-7q3u_iqGlhk/UKN3yWt3L6I/AAAAAAAACh0/6Pn5FJtDE8g/nyMap3_thumb%25255B2%25255D.png?imgmax=800" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That’s it for this tutorial. You can do a lot more – drill-down maps, heat maps. Not only you can display images but also draw lines on top of the map. You can use &lt;a href="http://www.ammap.com"&gt;amMap&lt;/a&gt; together with &lt;a href="http://www.amcharts.com"&gt;amCharts&lt;/a&gt; and create stunning data visualizations. Good luck!&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/4374322948392426380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/4374322948392426380?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/3q6WYsdQbV8/getting-started-with-javascript-maps.html" title="Getting started with JavaScript Maps" /><author><name>Antanas</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-UaKBEGV_t18/UKN3nqIsh5I/AAAAAAAACgk/sI8uWsW8Ls0/s72-c/firstMap_thumb%25255B7%25255D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://blog.amcharts.com/2012/11/getting-started-with-javascript-maps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIMQXg7eSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-3478703590431143545</id><published>2012-09-20T11:36:00.001+03:00</published><updated>2013-05-17T10:09:40.601+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T10:09:40.601+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><title>Exporting JavaScript Charts / Maps as image</title><content type="html">&lt;p&gt;Exporting JavaScript Charts as image was one of the widely requested feature. The trouble is that it’s quite complicated. Or so we thought until avid amCharts user Benjamin Maertz (make sure you check out &lt;a href="http://suspecticious.de/"&gt;his website&lt;/a&gt;) came up with a clever way to do so.&lt;/p&gt; &lt;p&gt;We’re not gonna keep you waiting. Here’s how to do the magic, in Ben’s own words.&lt;/p&gt; &lt;hr&gt;  &lt;p&gt;After i crawled the internet for few hours i have found &lt;a href="http://code.google.com/p/canvg/"&gt;canvg&lt;/a&gt;, its a pretty nice SVG parser and renderer which allows us to convert the charts to a canvas element from which we can extract the imagery to a simple data URL.&lt;/p&gt; &lt;p&gt;You need only to follow following instruction to make this work.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;#1 - Download&lt;/strong&gt; &lt;a href="http://code.google.com/p/canvg/"&gt;canvg&lt;/a&gt;&lt;br&gt;&lt;strong&gt;#2 - Include&lt;/strong&gt; the canvg.js, rbgcolor.js, amcharts.js and of course following extension&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// Extend AmCharts object&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;AmCharts.getExport = &lt;span class="kwrd"&gt;function&lt;/span&gt;(id) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; wrapper       = document.getElementById(id);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; svgs          = wrapper.getElementsByTagName(&lt;span class="str"&gt;'svg'&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; options       = {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        ignoreAnimation :   &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        ignoreMouse     :   &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        ignoreClear     :   &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        ignoreDimensions:   &lt;span class="kwrd"&gt;true&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        offsetX         :   0,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        offsetY         :   0&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    };&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; canvas        = document.createElement(&lt;span class="str"&gt;'canvas'&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; context       = canvas.getContext(&lt;span class="str"&gt;'2d'&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; counter       = {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        height            : 0,&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        width             : 0&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="rem"&gt;// Nasty workaround until somebody figured out to support images&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; removeImages(svg) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; startStr    = &lt;span class="str"&gt;'&amp;lt;image'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; stopStr     = &lt;span class="str"&gt;'&amp;lt;/image&amp;gt;'&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; stopStrAlt  = &lt;span class="str"&gt;'/&amp;gt;'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; start       = svg.indexOf(startStr);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; match       = &lt;span class="str"&gt;''&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="rem"&gt;// Recursion&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; ( start != -1 ) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; stop = svg.slice(start,start+1000).indexOf(stopStr);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ( stop != -1 ) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                svg = removeImages(svg.slice(0,start) + svg.slice(start + stop + stopStr.length,svg.length));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            } &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                stop = svg.slice(start,start+1000).indexOf(stopStrAlt);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; ( stop != -1 ) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                    svg = removeImages(svg.slice(0,start) + svg.slice(start + stop + stopStr.length,svg.length));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; svg;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    &lt;span class="rem"&gt;// Setup canvas&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    canvas.height     = wrapper.offsetHeight;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    canvas.width      = wrapper.offsetWidth;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    context.fillStyle = &lt;span class="str"&gt;'#FFFFFF'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    context.fillRect(0,0,canvas.width,canvas.height);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;    &lt;span class="rem"&gt;// Add SVGs&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;( i = 0; i &amp;lt; svgs.length; i++ ) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; container = svgs[i].parentNode;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; innerHTML = removeImages(container.innerHTML); &lt;span class="rem"&gt;// remove images from svg until its supported&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        options.offsetY = counter.height;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;        counter.height += container.offsetHeight;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;        counter.width = container.offsetWidth;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        canvg(canvas,innerHTML,options);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;    &lt;span class="rem"&gt;// Return output data URL&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; canvas.toDataURL();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;&lt;span class="rem"&gt;// Sample dump function&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; exportDat(id) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; output = AmCharts.getExport(id);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; image  = document.createElement(&lt;span class="str"&gt;'img'&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; link   = document.createElement(&lt;span class="str"&gt;'a'&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;    &lt;span class="rem"&gt;// Add image data&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;    image.src = output;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;    &lt;span class="rem"&gt;// Create download link with the image&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;    link.appendChild(image);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;    link.href     = output;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;    link.download = &lt;span class="str"&gt;'AmChartsExport.png'&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;    link.title    = &lt;span class="str"&gt;'Just download that awesome export ;)'&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;    &lt;span class="rem"&gt;// Return output into doc&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;    document.getElementById(&lt;span class="str"&gt;'output'&lt;/span&gt;).innerHTML = &lt;span class="str"&gt;''&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;    document.getElementById(&lt;span class="str"&gt;'output'&lt;/span&gt;).appendChild(link);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&lt;strong&gt;#4 - Execute&lt;/strong&gt; the extension like following 
&lt;p&gt;&amp;nbsp; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;AmCharts.getExport(); &lt;span class="rem"&gt;// Returns all charts in the global AmCharts instance&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;AmCharts.getExport(&amp;lt;id or element or array of those&amp;gt;) // Returns all charts within the given container&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Arial"&gt;Please note that getExport returns a universal embed url. You can use it as an src property of an &amp;lt;img&amp;gt; tag, or you can link to it using &amp;lt;a href&amp;gt;. (add “download” property to &amp;lt;a href&amp;gt; tag to force download of the image)&lt;/font&gt; &lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&lt;strong&gt;#5 – Examples&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stockchart: &lt;a href="http://jsfiddle.net/amcharts/8JJdY/"&gt;http://jsfiddle.net/amcharts/8JJdY/&lt;/a&gt;
&lt;li&gt;Map: &lt;a href="http://jsfiddle.net/amcharts/Hg6dg/"&gt;http://jsfiddle.net/amcharts/Hg6dg/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;You might wonder why i called it AmExport, well ... it can even export the brand new &lt;a href="http://blog.amcharts.com/2012/09/beta-version-of-javascript-maps-is.html"&gt;JavaScript Maps&lt;/a&gt; as shown in the second example :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canvg Fix&lt;/strong&gt; for that replace typerror which might appear&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// Search for that ( line 111 )&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;svg.compressSpaces = &lt;span class="kwrd"&gt;function&lt;/span&gt;(s) { &lt;span class="kwrd"&gt;return&lt;/span&gt; s.replace(/[\s\r\t\n]+/gm,&lt;span class="str"&gt;' '&lt;/span&gt;); }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;// Replace it by this ...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;svg.compressSpaces = &lt;span class="kwrd"&gt;function&lt;/span&gt;(s) { &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; s?s.replace(/[\s\r\t\n]+/gm,&lt;span class="str"&gt;' '&lt;/span&gt;):&lt;span class="str"&gt;''&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;
&lt;hr&gt;

&lt;p&gt;Thanks Bny!&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3478703590431143545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/3478703590431143545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/ntteyPFYjVE/exporting-javascript-charts-maps-as.html" title="Exporting JavaScript Charts / Maps as image" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2012/09/exporting-javascript-charts-maps-as.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NQnYzfSp7ImA9WhJVGUg.&quot;"><id>tag:blogger.com,1999:blog-479319840571279082.post-5963112029214671602</id><published>2012-09-06T16:25:00.001+03:00</published><updated>2012-09-06T21:41:33.885+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-06T21:41:33.885+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amCharts" /><category scheme="http://www.blogger.com/atom/ns#" term="amMap" /><category scheme="http://www.blogger.com/atom/ns#" term="amCharts for WPF" /><title>Beta version of JavaScript Maps is available NOW!</title><content type="html">&lt;p&gt;Ever since web development scene took shift from Flash to JavaScript there was an overwhelmingly popular demand for pure JavaScript interactive mapping product. So I’m extremely happy to announce that the first Beta version of our JavaScript Maps is available for &lt;a href="http://www.ammap.com/files/ammap_3.0.beta.zip"&gt;download now&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;The new JavaScript Maps Beta works on any SVG-compatible browser which basically means any modern browser (sorry no IE8 and down) including iOS flock.&lt;/p&gt; &lt;p&gt;Oh, and there’s even more good news. All original amMap 2.0 purchases made from the beginning of 2012 June, will be upgraded for free. For the rest of you a reasonably priced upgrade options will be offered.&lt;/p&gt; &lt;p&gt;Please also note that, during Beta period we won’t be able to provide support. However we do encourage to let us know if you find any bugs or encounter any road bumps along the way.&lt;/p&gt; &lt;p&gt;So if you’re feeling brave or can’t wait for production release (due later this month) here are the next steps you may take:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Check out these examples on jsFiddle:  &lt;ul&gt; &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/Z7Bag/"&gt;Flight routes map&lt;/a&gt;  &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/UGp6a/"&gt;Drill-down map&lt;/a&gt;  &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/aZt8N/"&gt;Zooming to countries&lt;/a&gt;  &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/NVMux/"&gt;Grouped countries&lt;/a&gt;  &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/urPvy/"&gt;Heat map&lt;/a&gt;  &lt;li&gt;&lt;a href="http://jsfiddle.net/amcharts/6c5U3/"&gt;World capitals map&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;a href="http://www.ammap.com/files/getfile.php?filename=ammap_3.0.beta.zip"&gt;Download JavaScript Maps 3.0 Beta&lt;/a&gt;  &lt;li&gt;&lt;a href="http://docs.amcharts.com/javascriptmaps"&gt;Visit class reference&lt;/a&gt; (it’s still a work in progress so please be careful as to not step on any unattended work tools or debris)  &lt;li&gt;&lt;a href="http://www.ammap.com/forum/viewforum.php?id=9"&gt;Report bugs and discuss features&lt;/a&gt; in our forum&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can also contact us directly at &lt;a href="mailto:info@ammap.com"&gt;info@ammap.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Happy mapping!&lt;/p&gt;  </content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/5963112029214671602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/479319840571279082/posts/default/5963112029214671602?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/amcharts/~3/y57cdTDvmSg/beta-version-of-javascript-maps-is.html" title="Beta version of JavaScript Maps is available NOW!" /><author><name>Martynas</name><uri>http://www.blogger.com/profile/00211558485890558055</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-haiW_wwuhBI/TVQbq7mpd-I/AAAAAAAArcI/oOxp7W_9Gwk/s220/n1358808116_30309106_2696.jpg" /></author><feedburner:origLink>http://blog.amcharts.com/2012/09/beta-version-of-javascript-maps-is.html</feedburner:origLink></entry></feed>
