Air Quality Widget - New Improved Feed

Posted on July 28th 2015
Podíl: aqicn.org/faq/2015-07-28/air-quality-widget-new-improved-feed/cs/
{ widget : feed }

In order to improve the integration of our AQI widgets within external websites, we have developped a new widget API feed. Compared to the existing widget feed, this new API feed provides much more flexibility for the integration, but also many more options for customzing the widget appearance.

Beijing Air Quality.
161
Unhealthy
Updated on Monday 23:00
PM2.5 AQI
Beijing PM25 (fine particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
161
PM10 AQI
Beijing PM10 (respirable particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
72
O3 AQI
Beijing O3 (ozone)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
3

You can, for instance, display a tiny widget as simple as Beijing

161
(move your mouse over the AQI number in order view the details), or a larger widget with details about the past 24 hours pollutants as shown on the right.

The new framework also supports templating, mutiple languages (English, Simplified and traditional Chinese, Spanish, ...) as well as possibility to do programatic integration with data based javascript callbacks.

A. Basic setup

The basic integration is simple and straight forward. You first need to add the following piece of code:

  
<script  type="text/javascript"  charset="utf-8">  
	(function  (w,  d,  t,  f)  {  
		w[f]  =  w[f]  ||  function  (c,  k,  n)  {  
			s  =  w[f],  k  =  s['k']  =  (s['k']  ||  (k  ?  ('&k='  +  k)  :  ''));  s['c']  =  
				c  =  (c  instanceof  Array)  ?  c  :  [c];  s['n']  =  n  =  n  ||  0;  L  =  d.createElement(t),  e  =  d.getElementsByTagName(t)[0];  
			L.async  =  1;  L.src  =  '//feed.aqicn.org/feed/'  +  (c[n].city)  +  '/'  +  (c[n].lang  ||  '')  +  '/feed.v1.js?n='  +  n  +  k;  
			e.parentNode.insertBefore(L,  e);  
		};  
	})(window,  document,  'script',  '_aqiFeed');    
</script>

Then, just add this other code to include the widget:

  
<span  id="city-aqi-container"></span>  
  
<script  type="text/javascript"  charset="utf-8">  
	_aqiFeed({  container:  "city-aqi-container",  city:  "beijing"  });  
</script>

The function `_aqiFeed` takes as argument the configuration block for the widget. The parameter `container: "city-aqi-container"` refers to the id of the tag in which you want to insert the widget (eg `<span id='city-aqi-container'></span>`), and the parameter city the name of the city for which you want to show the current Air Quality reading (eg `city: "london"`).

B. Specifiying the Language

北京
161

You can also specify the language to be used by setting the lang option. For instance, to include the widget in Chinese (as shown on the right), use the following code:

  
_aqiFeed({  
	container:"city-aqi-container",  
	city:"beijing",  
	lang:"cn"  
});  

The currently supported languages are:

  • "en": English
  • "cn": Chinese
  • "jp": Japanese
  • "es": Spanish
  • "kr": Korean
  • "ru": Russian
  • "hk": Traditional Chinese
  • "fr": French
  • "pl": Polish
  • "de": German
  • "pt": Portuguese
  • "vn": Vietnamese
  • "it": Italian
  • "id": Indonesian
  • "nl": Dutch
  • "fa": Persian
  • "th": Thai
  • "hu": Hungarian
  • "el": Greek
  • "ro": Romanian
  • "bg": Bulgarian
  • "ur": Urdu
  • "hi": Hindi
  • "ar": Arabic
  • "sr": Serbian
  • "bn": Bangla
  • "hu": Hungarian
  • "bs": Bosnian
  • "hr": Croatian
  • "tr": Turkish
  • "uk": Ukrainian
  • "cs": Czech
  • "be": Belarusian
  • "km": Khmer
  • "lo": Lao

    If not specified or set to null, English is used.

  • C. Specifiying the display format

    Beijing AQI is
    161

    on Monday 23:00

    It is possible to customize the text to be displayed within the widget by specifying the display option. For instance, to display with both the textual "AQI" name as well as the update time (as shown on the widget on the left), you can use the following code:

    >
      
    _aqiFeed({    
    	display:"%cityname  AQI  is  %aqi<br><small>on  %date</small>",  
    	container:"city-aqi-container-display",    
    	city:"beijing"  
    });  
    

    The parameter display is an HTML-based string, and can contain any of the following keywords:

    • `%cityname` for the name of the city (eg Beijing),
    • `%aqi` for the decorated AQI value (eg 58),
    • `%aqiv` for the undecorated (raw text) AQI value (eg 58),
    • `%style` for the css declaration of the decorated AQI details (eg background-color: #ffde33;color:#000000;),
    • `%date` for the time at which the AQI was updated (eg Wed 20:00),
    • `%impact` for the associated health impact (eg Good, Moderate...)
    • `%attribution` for the AQI data attribution ( eg Beijing Environmental Protection Monitoring Center)
    • `%details` for the full AQI details (the content of the popup displayed when moving the mouse over the AQI value).

    Here are a few examples:

    Display Configuration Result
    %cityname Air Quality is <b>%impact</b>.
    Beijing Air Quality is Unhealthy.
    %aqi <small>(%impact)</small>
    161
    (Unhealthy)
    <span style='%style;font-size:12px;padding:5px 10px;'>%cityname AQI: %impact</span>
    Beijing AQI: Unhealthy
    %cityname Air Quality is <span style='%style;padding:0 5px'>%impact</span> (%aqiv on %date)
    Beijing Air Quality is Unhealthy (
    161
    on Monday 23:00)
    %cityname Air Quality is provided by %attribution
    Beijing Air Quality is provided by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心)
    <div style='%style;max-width:180px;text-align:center;'><small>%cityname AQI:</small> <div style='font-size:88px;height:60px;padding-top:30px;'>%aqiv</div> %impact</div>
    Beijing AQI:
    161
    Unhealthy
    %details
    Beijing Air Quality.
    161
    Unhealthy
    Updated on Monday 23:00
    PM2.5 AQI
    Beijing PM25 (fine particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    161
    PM10 AQI
    Beijing PM10 (respirable particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    72
    O3 AQI
    Beijing O3 (ozone)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    3

    D. Programatic callback

    If you prefer DIY integration, you can also specify a javascript function callback to be when the data is loaded. You just need to add the option callback in the parameter block, such as for instance:

      
    _aqiFeed({  city:"beijing",  callback:function(aqi){  
    	/*  Do  whatever  you  want  with  the  AQI  object  */  
    	console.log(aqi);    
    }  });

    For instance, assuming that you are also using jquery, the following code:

      
    <div  id='my-container'></div>  
    <script  type="text/javascript"  charset="utf-8">  
    	_aqiFeed({  
    		city:  "beijing",  lang:  "pl",  callback:  function  (aqi)  {  
    			$("#my-container").html(aqi.details);  
    		}  
    	});  
    </script>

    will produce the following content:

    Pekin Jakość powietrza.
    161
    Unhealthy
    Poprawiony: Poniedziałek 23:00
    PM2.5 AQI
    Pekin PM25 (fine particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    161
    PM10 AQI
    Pekin PM10 (respirable particulate matter)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    72
    O3 AQI
    Pekin O3 (ozone)  measured by Beijing Environmental Protection Monitoring Center (北京市环境保护监测中心).
Values are converted to the US EPA AQI standard.
    3

    The aqi objects contains all the keywords mentioned in the section C (display format).

    E. Including multiple widgets

    Including multiple widgets in a single page is possible. All you need is to pass to the `_aqiFeed` function an array with all the widgets you need to include. For instance, to insert London, Paris and New York, can do use this code:

      
    var  cities  =  ["london",  "newyork",  "seoul",  "guangzhou",  "tokyo",  "shanghai",  "paris","hongkong"];  
      
    var  aqiWidgetConfig  =  [];    
    cities.forEach(function(city)  {  aqiWidgetConfig.push({city:city,  callback:  displayCity});  });  
    _aqiFeed(aqiWidgetConfig);  
      
    function  displayCity(aqi)  {  
    	$("#mutiple-city-aqi").append(aqi.text("<center>%cityname<br>%aqi<br><small>%date</small></center>"));  
    }  
    
    The result is:
    London
    72
    Monday 14:00
    New-york
    -
    Thursday 9:00
    Seoul
    53
    Tuesday 0:00
    Guangzhou
    -
    Tuesday 20:00
    Hibiyakoen, Chiyoda, Tokyo
    61
    Monday 23:00
    Shanghai
    114
    Monday 23:00
    Paris
    31
    Monday 14:00
    HongKong
    54
    Monday 22:00

    F. Feed usage

    This widget feed is provided for free, and for the sole purpose of integrating the feed into other websites (i.e. apps are excluded), and under the condition of reasonable and acceptable use. We reserve the right to change the feed structure (data format) at any time and without prior notice, so better to contact us if you plan to do a custom integration.

    When doing the integration, there are few deontological rules which should be applied when using the data feed:

    • First, always make sure that the attribution to the originating EPA is present. All the Air Quality data you can find on the World Air Quality Index project is thanks to the hard work from all the EPA's all over the world, so please make sure to provide the attribution for their work too. If you use the programmatic API, the attribution is available from the attribution field.
    • If you are from an institution and using the data, please, show respect and pay back the credits for our work. If you are trying to scrape the data feed, please, keep in mind that this project relies on sponsorship and cooperation projects, so consider supporting us rather than scrapping us, especially if you are a large scale institution or university.
    • As a matter of fact, do not act like the WRI (World Resource Institute ): Scrapping the overall World Air Quality Index project data feed, and beeing so cheap that they would not even give any attribution for our work, and this despite their 80 millions annual USD fundings. Don't believe us? Check this snapshot.

    G. Future improvments

    This is the first version of this new widget feed API. There are quite a few improvements already in the pipeline, such as adjustable graphic width and height, selectable AQI scale, etc. If you would like to suggest any other specific improvement, feel free to send us a message.

    Víte o nějakých stanicích kvality ovzduší ve vašem okolí? proč se nezapojit do mapy s vlastní stanicí kvality ovzduší?
    Více se dozvíte na
    > aqicn.org/gaia/ <
    Zaregistrujte se do našeho bezplatného měsíčního seznamu adresátů a získejte upozornění, když budou k dispozici nové články.

    Click here to see all the FAQ entries

    O měření kvality ovzduší a znečištění:

    O úrovních kvality ovzduší

    -Hodnoty indexu kvality ovzduší (AQI).Úrovně obav o zdraví
    0 - 50DobrýKvalita ovzduší je považována za uspokojivou a znečištění ovzduší představuje malé nebo žádné riziko
    51 -100MírnýKvalita ovzduší je přijatelná; u některých znečišťujících látek však může existovat mírný zdravotní problém u velmi malého počtu lidí, kteří jsou neobvykle citliví na znečištění ovzduší.
    101-150Nezdravé pro citlivé skupinyČlenové citlivých skupin mohou mít účinky na zdraví. Obecná veřejnost pravděpodobně nebude zasažena.
    151-200NezdravýKaždý může začít projevovat účinky na zdraví. členové citlivých skupin mohou mít vážnější účinky na zdraví
    201-300Velmi NezdravéZdravotní varování při havarijních podmínkách. Celá populace je pravděpodobněji postižena.
    300+NebezpečnýZdravotní upozornění: každý může mít vážnější zdravotní účinky

    Chcete-li se dozvědět více o kvalitě ovzduší a znečištění, podívejte se na téma Kvalita ovzduší na wikipedii nebo na airnow průvodce Kvalita ovzduší a vaše zdraví .

    Velmi užitečné zdravotní rady pekingského lékaře Richarda Saint Cyr MD najdete na blogu www.myhealthbeijing.com .


    Upozornění na použití: Veškeré údaje o kvalitě ovzduší jsou v době zveřejnění neplatné a vzhledem k zajištění kvality mohou být tyto údaje kdykoli změněny bez upozornění. Projekt Světový index kvality ovzduší vynaložil veškeré přiměřené schopnosti a péči při sestavování obsahu těchto informací a za žádných okolností Projektový tým Světového indexu kvality ovzduší nebo jeho zástupci nesou odpovědnost za smluvní, delikt nebo jinou odpovědnost za jakoukoliv ztrátu, zranění nebo škodu vzniklou přímo nebo nepřímo z poskytování těchto údajů.



    Settings


    Language Settings:


    Temperature unit:
    Celcius