آموزش کار با نقشه حبابی در Aps.Net

پنجشنبه 7 خرداد 1394

در این مقاله میخواهیم توضیحی در باره چگونگی پیاده سازی نقشه حبابی درسایت ها، مطابق با اطلاعات برنامه خود بدهیم

آموزش کار با نقشه حبابی  در Aps.Net

نقشه حبابی چیست ؟ نقشه حبابی به عنوان  ابزاری برای رسم و اندازه گیری مکان جغرافیایی هر کشور، در نقشه ی مخصوص به خود آن کشوراست در نقشه حبابی میتوان  ارزش  اندازه گیری شده را افزایش داد و به کاربر میتوان این اجازه داده شود که مکان جغرافیایی را در اندازه دلخواه خود ببیند
دراین مثال نیز این امکان وجود دارد که شما حباب های موجود در نقشه را با هر رنگ دلخواه خود  ببینید
برای شروع به کار  شما نیاز به اضافه کردن  script های زیر  در برنامه خود  دارید

    <script src="Scripts/jquery-1.11.1.min.js"></script>  
    <script src="Scripts/highmaps.js"></script>  
    <script src="Scripts/proj4.js"></script>  
    <script src="Scripts/us-all.js"></script>  
    <script src="Scripts/world.js"></script>

اکنون شروع به ثبت داده به  در برنامه خود میکنیم


    var jsdata = [{ "State": "Arizona", "lat": "32.8796", "lon": "-111.7282", "Quantity": "29,248" }, { "State": "Arizona", "lat": "33.3197", "lon": "-111.9837", "Quantity": "102,928" }, { "State": "Arizona", "lat": "33.3939", "lon": "-111.6965", "Quantity": "108,863" }, { "State": "Arizona", "lat": "33.4495", "lon": "-112.3410", "Quantity": "67,218" }, { "State": "Arizona", "lat": "33.6155", "lon": "-111.9263", "Quantity": "66,556" }, { "State": "Arizona", "lat": "33.6384", "lon": "-112.2073", "Quantity": "147,552" }, { "State": "California", "lat": "33.6145", "lon": "-117.7101", "Quantity": "26,053" }, { "State": "California", "lat": "33.7008", "lon": "-117.9362", "Quantity": "26,057" }, { "State": "California", "lat": "33.7963", "lon": "-116.3845", "Quantity": "497,249" }, { "State": "California", "lat": "33.8274", "lon": "-118.0868", "Quantity": "32,052" }, { "State": "California", "lat": "33.8763", "lon": "-117.7418", "Quantity": "23,521" }, { "State": "California", "lat": "33.8996", "lon": "-118.3669", "Quantity": "26,169" }, { "State": "California", "lat": "34.0302", "lon": "-118.3865", "Quantity": "21,996" }, { "State": "California", "lat": "34.0569", "lon": "-117.2995", "Quantity": "59,135" }, { "State": "California", "lat": "34.0737", "lon": "-117.8859", "Quantity": "4,757" }, { "State": "California", "lat": "34.1820", "lon": "-118.3140", "Quantity": "28,909" }, { "State": "California", "lat": "34.2257", "lon": "-119.1551", "Quantity": "22,569" }, { "State": "California", "lat": "34.2300", "lon": "-118.5500", "Quantity": "22,413" }, { "State": "California", "lat": "34.4130", "lon": "-118.5036", "Quantity": "18,399" }, { "State": "California", "lat": "34.4813", "lon": "-117.3389", "Quantity": "23,268" }, { "State": "California", "lat": "34.6029", "lon": "-118.1464", "Quantity": "24,651" }, { "State": "California", "lat": "37.5038", "lon": "-121.9762", "Quantity": "4" }, { "State": "California", "lat": "38.3525", "lon": "-122.7148", "Quantity": "2" }, { "State": "Colorado", "lat": "38.4766", "lon": "-107.8812", "Quantity": "3,294" }, { "State": "Colorado", "lat": "39.0730", "lon": "-108.5710", "Quantity": "8,704" }, { "State": "Florida", "lat": "27.8400", "lon": "-82.6800", "Quantity": "75,066" }, { "State": "Florida", "lat": "27.9400", "lon": "-82.3200", "Quantity": "135,365" }, { "State": "Florida", "lat": "27.9600", "lon": "-82.3200", "Quantity": "-6" }, { "State": "Florida", "lat": "27.9925", "lon": "-82.7296", "Quantity": "27,274" }, { "State": "Florida", "lat": "28.0661", "lon": "-82.5688", "Quantity": "261" }, { "State": "Florida", "lat": "28.0790", "lon": "-80.6984", "Quantity": "15,720" }, { "State": "Florida", "lat": "28.0941", "lon": "-81.9738", "Quantity": "85,437" }, { "State": "Florida", "lat": "28.1918", "lon": "-82.3812", "Quantity": "97,233" }, { "State": "Florida", "lat": "28.3027", "lon": "-81.4216", "Quantity": "135,193" }, { "State": "Florida", "lat": "28.5622", "lon": "-81.2074", "Quantity": "120,424" }, { "State": "Florida", "lat": "28.6629", "lon": "-81.4176", "Quantity": "110,185" }, { "State": "Florida", "lat": "29.1800", "lon": "-81.0800", "Quantity": "66,725" }, { "State": "Georgia", "lat": "32.8100", "lon": "-83.7100", "Quantity": "3" }, { "State": "Georgia", "lat": "33.3671", "lon": "-84.7647", "Quantity": "87,508" }, { "State": "Georgia", "lat": "33.4600", "lon": "-84.2100", "Quantity": "155,811" }, { "State": "Georgia", "lat": "33.4759", "lon": "-82.0709", "Quantity": "10,875" }, { "State": "Georgia", "lat": "33.5600", "lon": "-84.5400", "Quantity": "17,937" }, { "State": "Georgia", "lat": "33.5610", "lon": "-84.3223", "Quantity": "203,297" }, { "State": "Georgia", "lat": "33.6810", "lon": "-84.1604", "Quantity": "134,700" }, { "State": "Georgia", "lat": "33.8200", "lon": "-84.3600", "Quantity": "122,120" }, { "State": "Georgia", "lat": "33.9168", "lon": "-83.4439", "Quantity": "84,648" }, { "State": "Georgia", "lat": "33.9522", "lon": "-84.1343", "Quantity": "105,862" }, { "State": "Georgia", "lat": "34.0051", "lon": "-84.5752", "Quantity": "-14" }, { "State": "Georgia", "lat": "34.0076", "lon": "-84.5769", "Quantity": "204,888" }, { "State": "Georgia", "lat": "34.0600", "lon": "-83.9800", "Quantity": "104,291" }, { "State": "Georgia", "lat": "34.1900", "lon": "-84.1200", "Quantity": "186,459" }, { "State": "Idaho", "lat": "42.9101", "lon": "-112.4605", "Quantity": "5,524" }, { "State": "Idaho", "lat": "43.6048", "lon": "-116.3496", "Quantity": "14,476" }, { "State": "Illinois", "lat": "41.5300", "lon": "-87.8500", "Quantity": "54,989" }, { "State": "Illinois", "lat": "41.7200", "lon": "-88.0300", "Quantity": "72,366" }, { "State": "Illinois", "lat": "42.0500", "lon": "-87.8300", "Quantity": "59,164" }, { "State": "Illinois", "lat": "42.1000", "lon": "-87.9700", "Quantity": "49,074" }, { "State": "Illinois", "lat": "42.1300", "lon": "-88.3300", "Quantity": "77,454" }, { "State": "Illinois", "lat": "42.2300", "lon": "-87.9300", "Quantity": "51,251" }, { "State": "Illinois", "lat": "42.2600", "lon": "-88.9700", "Quantity": "57,571" }, { "State": "Indiana", "lat": "39.6292", "lon": "-86.1252", "Quantity": "24,227" }, { "State": "Indiana", "lat": "39.6303", "lon": "-86.1249", "Quantity": "1,074" }, { "State": "Indiana", "lat": "39.7613", "lon": "-86.3488", "Quantity": "12,319" }, { "State": "Indiana", "lat": "39.7634", "lon": "-86.3489", "Quantity": "1,027" }, { "State": "Indiana", "lat": "40.0028", "lon": "-86.1227", "Quantity": "901" }, { "State": "Indiana", "lat": "41.4900", "lon": "-87.4700", "Quantity": "83,677" }, { "State": "Kentucky", "lat": "38.1438", "lon": "-85.6751", "Quantity": "-85" }]

 

اکنون داده هایی را که  ثبت کردیم باید چک کنیم  که آیا این داده  هایی را که وارد کردیم  درست است یا نه . در واقع در نقشه حبابی  اگر دادهایی نا مربوط به موقعیت جغرافیایی آن کشور  یا شهر را وارد کنیم باعث جلگویری از  اجرای نقشه میشود بنابراین برای رفع این مشکل بهتر است همانند کد زیر بررسی میکنیم که  آیا داده های لازم برای پیاده سازی یک  نقشه وارد شده است یا نه که من در اینجا 4 پارامتر لازم برای  رسم یک نقشه برای شما به عنوان مثال فراهم آوردم

1-نام کشور یا استان  2- طول جغرافیایی 3 – عرض جغرافیایی 4- جمعیت

$.each(jsdata, function (ix, entry)   
{    
                if (Object.keys(entry).length >= 4)   
                {    
                    tmp = entry[zPoint].replace(/\,/g, '').replace(/\$/g, '').replace(/\%/g, '').replace(/\(/g, '').replace(/\)/g, '');    
                    if (isNaN(tmp)) {    
                        entry.z = entry[zPoint];    
                    }    
                    else {    
    
                    }    
                    data1.push(entry);    
                }    
});   

اکنون کد پباده سازی نقشه، در زیر آورده شده است

    chart = $('#container').highcharts('Map', {  
                   chart: {  
                       borderWidth: 1  
                   },  
                   title: {  
                       text: 'Bubble map'  
                   },  
                   subtitle: {  
                       text: 'Bubble map sub title'  
                   },  
      
                   tooltip: {  
                       pointFormat: '{point.State}: {point.Quantity}'  
                   },  
      
                   mapNavigation: {  
                       enabled: true,  
                       buttonOptions: {  
                           verticalAlign: 'bottom'  
                       }  
                   },  
                   xAxis: {  
                   },  
                   yAxis: {  
                   },  
                   legend: {  
                       enabled: true,  
                       title: {  
                           style: {  
                               color: (Highcharts.theme && Highcharts.theme.textColor) || 'black'  
                           }  
                       },  
                       layout: 'vertical',  
                       align: 'right',  
                       verticalAlign: 'bottom',  
                       floating: true,  
                       valueDecimals: 0,  
                       valueSuffix: '$',  
                       backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || 'rgba(255, 255, 255, 0.85)',  
                       symbolRadius: 0,  
                       symbolHeight: 14  
                   },  
                   series: [{  
                       mapData: map,  
                       borderColor: '#E0E0E0',  
                       colour: '#E0E0E0',  
                       showInLegend: false,  
                       enableMouseTracking: true,  
                       cursor: 'pointer',  
                       dataLabels: {  
                           enabled: true,  
                           format: '{point.properties.postal-code}',  
                           textDecoration: 'none',  
                           style: { "color": "darkgrey", "fontWeight": "bold", "HcTextStroke": "0px rgba(0,0,0,0.5)" }  
                       },  
                       events: {  
                           click: function (e) {  
                               e.point.zoomTo();  
                           }  
                       },  
                   },  
                   {  
                       type: 'mapbubble',  
                       color: '#E0E0E0',  
                       dataLabels: {  
                           enabled: true,  
                           formatter: function () {  
                           }  
                       },  
                       enableMouseTracking: true,  
                       joinBy: ['iso-a2', 'code'],  
                       name: zPoint,  
                       data: data1,  
                       minSize: $("#mapMinBubSize").val(),  
                       maxSize: $("#mapMaxBubSize").val(),  
                       color: $("#mapColor").val(),  
                       displayNegative: true,  
                       sizeBy: 'width',  
                       cursor: 'pointer',  
                       negativeColor: Highcharts.getOptions().colors[0]  
                   }  
                   ],  
                   chart: {  
                       marginRight: 50  
                   },  
                   exporting: {  
                       enabled: false  
                   }  
               }   

همامن طور که در کد  بالا میبنید چندتا متغیر تعریف کردیم که مقدار های ورودی را درآن ها قرار می دهیم مثل ("#mapMinBubSize").val().  یک منتغیر مهم تر در  کد های قبل  به نام zPoint میبنید که درآن تعداد افزایش یا کاهش حباب ها را بررسی می کند .

var zPoint = "Quantity";

ما یک تابع برای اجرای نقشه پیاده سازی میکنیم

 


    $(function () {  
               loadMap();              
           }); 
حال در کد زیر تابع اجرای نقشه را کامل میکنیم  

 

    function loadMap() {  
              var selectMap = $.trim($("#mapSelectMap").val());  
              var zPoint = "Quantity";  
              var jsdata = [{ "State": "Arizona", "lat": "32.8796", "lon": "-111.7282", "Quantity": "29,248" }, { "State": "Arizona", "lat": "33.3197", "lon": "-111.9837", "Quantity": "102,928" }, { "State": "Arizona", "lat": "33.3939", "lon": "-111.6965", "Quantity": "108,863" }, { "State": "Arizona", "lat": "33.4495", "lon": "-112.3410", "Quantity": "67,218" }, { "State": "Arizona", "lat": "33.6155", "lon": "-111.9263", "Quantity": "66,556" }, { "State": "Arizona", "lat": "33.6384", "lon": "-112.2073", "Quantity": "147,552" }, { "State": "California", "lat": "33.6145", "lon": "-117.7101", "Quantity": "26,053" }, { "State": "California", "lat": "33.7008", "lon": "-117.9362", "Quantity": "26,057" }, { "State": "California", "lat": "33.7963", "lon": "-116.3845", "Quantity": "497,249" }, { "State": "California", "lat": "33.8274", "lon": "-118.0868", "Quantity": "32,052" }, { "State": "California", "lat": "33.8763", "lon": "-117.7418", "Quantity": "23,521" }, { "State": "California", "lat": "33.8996", "lon": "-118.3669", "Quantity": "26,169" }, { "State": "California", "lat": "34.0302", "lon": "-118.3865", "Quantity": "21,996" }, { "State": "California", "lat": "34.0569", "lon": "-117.2995", "Quantity": "59,135" }, { "State": "California", "lat": "34.0737", "lon": "-117.8859", "Quantity": "4,757" }, { "State": "California", "lat": "34.1820", "lon": "-118.3140", "Quantity": "28,909" }, { "State": "California", "lat": "34.2257", "lon": "-119.1551", "Quantity": "22,569" }, { "State": "California", "lat": "34.2300", "lon": "-118.5500", "Quantity": "22,413" }, { "State": "California", "lat": "34.4130", "lon": "-118.5036", "Quantity": "18,399" }, { "State": "California", "lat": "34.4813", "lon": "-117.3389", "Quantity": "23,268" }, { "State": "California", "lat": "34.6029", "lon": "-118.1464", "Quantity": "24,651" }, { "State": "California", "lat": "37.5038", "lon": "-121.9762", "Quantity": "4" }, { "State": "California", "lat": "38.3525", "lon": "-122.7148", "Quantity": "2" }, { "State": "Colorado", "lat": "38.4766", "lon": "-107.8812", "Quantity": "3,294" }, { "State": "Colorado", "lat": "39.0730", "lon": "-108.5710", "Quantity": "8,704" }, { "State": "Florida", "lat": "27.8400", "lon": "-82.6800", "Quantity": "75,066" }, { "State": "Florida", "lat": "27.9400", "lon": "-82.3200", "Quantity": "135,365" }, { "State": "Florida", "lat": "27.9600", "lon": "-82.3200", "Quantity": "-6" }, { "State": "Florida", "lat": "27.9925", "lon": "-82.7296", "Quantity": "27,274" }, { "State": "Florida", "lat": "28.0661", "lon": "-82.5688", "Quantity": "261" }, { "State": "Florida", "lat": "28.0790", "lon": "-80.6984", "Quantity": "15,720" }, { "State": "Florida", "lat": "28.0941", "lon": "-81.9738", "Quantity": "85,437" }, { "State": "Florida", "lat": "28.1918", "lon": "-82.3812", "Quantity": "97,233" }, { "State": "Florida", "lat": "28.3027", "lon": "-81.4216", "Quantity": "135,193" }, { "State": "Florida", "lat": "28.5622", "lon": "-81.2074", "Quantity": "120,424" }, { "State": "Florida", "lat": "28.6629", "lon": "-81.4176", "Quantity": "110,185" }, { "State": "Florida", "lat": "29.1800", "lon": "-81.0800", "Quantity": "66,725" }, { "State": "Georgia", "lat": "32.8100", "lon": "-83.7100", "Quantity": "3" }, { "State": "Georgia", "lat": "33.3671", "lon": "-84.7647", "Quantity": "87,508" }, { "State": "Georgia", "lat": "33.4600", "lon": "-84.2100", "Quantity": "155,811" }, { "State": "Georgia", "lat": "33.4759", "lon": "-82.0709", "Quantity": "10,875" }, { "State": "Georgia", "lat": "33.5600", "lon": "-84.5400", "Quantity": "17,937" }, { "State": "Georgia", "lat": "33.5610", "lon": "-84.3223", "Quantity": "203,297" }, { "State": "Georgia", "lat": "33.6810", "lon": "-84.1604", "Quantity": "134,700" }, { "State": "Georgia", "lat": "33.8200", "lon": "-84.3600", "Quantity": "122,120" }, { "State": "Georgia", "lat": "33.9168", "lon": "-83.4439", "Quantity": "84,648" }, { "State": "Georgia", "lat": "33.9522", "lon": "-84.1343", "Quantity": "105,862" }, { "State": "Georgia", "lat": "34.0051", "lon": "-84.5752", "Quantity": "-14" }, { "State": "Georgia", "lat": "34.0076", "lon": "-84.5769", "Quantity": "204,888" }, { "State": "Georgia", "lat": "34.0600", "lon": "-83.9800", "Quantity": "104,291" }, { "State": "Georgia", "lat": "34.1900", "lon": "-84.1200", "Quantity": "186,459" }, { "State": "Idaho", "lat": "42.9101", "lon": "-112.4605", "Quantity": "5,524" }, { "State": "Idaho", "lat": "43.6048", "lon": "-116.3496", "Quantity": "14,476" }, { "State": "Illinois", "lat": "41.5300", "lon": "-87.8500", "Quantity": "54,989" }, { "State": "Illinois", "lat": "41.7200", "lon": "-88.0300", "Quantity": "72,366" }, { "State": "Illinois", "lat": "42.0500", "lon": "-87.8300", "Quantity": "59,164" }, { "State": "Illinois", "lat": "42.1000", "lon": "-87.9700", "Quantity": "49,074" }, { "State": "Illinois", "lat": "42.1300", "lon": "-88.3300", "Quantity": "77,454" }, { "State": "Illinois", "lat": "42.2300", "lon": "-87.9300", "Quantity": "51,251" }, { "State": "Illinois", "lat": "42.2600", "lon": "-88.9700", "Quantity": "57,571" }, { "State": "Indiana", "lat": "39.6292", "lon": "-86.1252", "Quantity": "24,227" }, { "State": "Indiana", "lat": "39.6303", "lon": "-86.1249", "Quantity": "1,074" }, { "State": "Indiana", "lat": "39.7613", "lon": "-86.3488", "Quantity": "12,319" }, { "State": "Indiana", "lat": "39.7634", "lon": "-86.3489", "Quantity": "1,027" }, { "State": "Indiana", "lat": "40.0028", "lon": "-86.1227", "Quantity": "901" }, { "State": "Indiana", "lat": "41.4900", "lon": "-87.4700", "Quantity": "83,677" }, { "State": "Kentucky", "lat": "38.1438", "lon": "-85.6751", "Quantity": "-85" }];  
              var data1 = [];  
              var tmp = '';  
              var formatedVal = 0;  
              if (selectMap == "0") {  
                  var H = Highcharts,  
                               map = H.maps['countries/us/us-all'],  
                                  chart;  
              }  
              else {  
                  var H = Highcharts,  
                                    map = H.maps[selectMap],  
                                       chart;  
              }  
              $.each(jsdata, function (ix, entry) {  
                  if (Object.keys(entry).length >= 4) {  
                      tmp = entry[zPoint].replace(/\,/g, '').replace(/\$/g, '').replace(/\%/g, '').replace(/\(/g, '').replace(/\)/g, '');  
                      if (isNaN(tmp)) {  
                          entry.z = entry[zPoint];  
                      }  
                      else {  
      
                      }  
                      data1.push(entry);  
                  }  
              });  
              chart = $('#container').highcharts('Map', {  
                  chart: {  
                      borderWidth: 1  
                  },  
                  title: {  
                      text: 'Bubble map'  
                  },  
                  subtitle: {  
                      text: 'Bubble map sub title'  
                  },  
      
                  tooltip: {  
                      pointFormat: '{point.State}: {point.Quantity}'  
                  },  
      
                  mapNavigation: {  
                      enabled: true,  
                      buttonOptions: {  
                          verticalAlign: 'bottom'  
                      }  
                  },  
                  xAxis: {  
                  },  
                  yAxis: {  
                  },  
                  legend: {  
                      enabled: true,  
                      title: {  
                          style: {  
                              color: (Highcharts.theme && Highcharts.theme.textColor) || 'black'  
                          }  
                      },  
                      layout: 'vertical',  
                      align: 'right',  
                      verticalAlign: 'bottom',  
                      floating: true,  
                      valueDecimals: 0,  
                      valueSuffix: '$',  
                      backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || 'rgba(255, 255, 255, 0.85)',  
                      symbolRadius: 0,  
                      symbolHeight: 14  
                  },  
                  series: [{  
                      mapData: map,  
                      borderColor: '#E0E0E0',  
                      colour: '#E0E0E0',  
                      showInLegend: false,  
                      enableMouseTracking: true,  
                      cursor: 'pointer',  
                      dataLabels: {  
                          enabled: true,  
                          format: '{point.properties.postal-code}',  
                          textDecoration: 'none',  
                          style: { "color": "darkgrey", "fontWeight": "bold", "HcTextStroke": "0px rgba(0,0,0,0.5)" }  
                      },  
                      events: {  
                          click: function (e) {  
                              e.point.zoomTo();  
                          }  
                      },  
                  },  
                  {  
                      type: 'mapbubble',  
                      color: '#E0E0E0',  
                      dataLabels: {  
                          enabled: true,  
                          formatter: function () {  
                          }  
                      },  
                      enableMouseTracking: true,  
                      joinBy: ['iso-a2', 'code'],  
                      name: zPoint,  
                      data: data1,  
                      minSize: $("#mapMinBubSize").val(),  
                      maxSize: $("#mapMaxBubSize").val(),  
                      color: $("#mapColor").val(),  
                      displayNegative: true,  
                      sizeBy: 'width',  
                      cursor: 'pointer',  
                      negativeColor: Highcharts.getOptions().colors[0]  
                  }  
                  ],  
                  chart: {  
                      marginRight: 50  
                  },  
                  exporting: {  
                      enabled: false  
                  }  
              });  
          }   

حال اگر از برنامه اجرا بگیرید خروجی زیر را میبیند

قطعه کد زیر برای نوار tooltip روی نقشه به  کار میرود  شما میتوایند انواع دادهای مختلفی به آن بدهید اما در این جا  من فقط نام شهر و جمعیت را در   tooltip نقشه گذاشتم

    tooltip: {  
                       pointFormat: '{point.State}: {point.Quantity}'  
              },   

نکته بعدی که باید گفته شود این است که ما باید عناصری که کاربر پسند باشد مثل تغیر رنگ ، تغیر اندازه حباب ها و.. را به برنامه خود اضافه کنیم

  
   
     
   <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>  
   <label>Min Bubble Size</label>  
   <input type="number" value="8" min="1" id="mapMinBubSize" title="Type Bubble Min Size." />  
   <label>Max Bubble Size</label>  
   <input type="number" min="1" value="40" id="mapMaxBubSize" title="Type Bubble Max Size." />  
   <label>Color</label>  
   <input type="color" value="#BAD6F2" id="mapColor" title="Select Bubble Color." />  
   <label>Select Map</label>  
   <select name="tech" id="mapSelectMap" class="tech" title="Select Map.">  
       <option value="0">Select Map</option>  
       <option value="countries/us/us-all" selected="selected">US alone</option>  
       <option value="custom/world">Custom World</option>  
   </select>  
   <div id="apply" style="cursor: pointer; background-color: red; color: white; width: 100px; padding: 5px; float: right;">Apply Settings</div> 

و ما نیاز داریم به یک تابع  که در انتها ،کاربر بتواند تنظیمات خود را در برنامه ذخیره کند

    $('#apply').click(function () {  
                   loadMap();  
               });   

و در آخر تصویری از کد هایی که توضیح دادیم را براتون گذاشتم

!DOCTYPE html>  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
    <title>Bubble Map Demo - SibeeshPassion</title>  
    <script src="Scripts/jquery-1.11.1.min.js"></script>  
    <script src="Scripts/highmaps.js"></script>  
    <script src="Scripts/proj4.js"></script>  
    <script src="Scripts/us-all.js"></script>  
    <script src="Scripts/world.js"></script>  
  
    <script>  
        $(function () {  
            loadMap();  
            $('#apply').click(function () {  
                loadMap();  
            });  
        });  
        function loadMap() {  
            var selectMap = $.trim($("#mapSelectMap").val());  
            var zPoint = "Quantity";  
            var jsdata = [{ "State": "Arizona", "lat": "32.8796", "lon": "-111.7282", "Quantity": "29,248" }, { "State": "Arizona", "lat": "33.3197", "lon": "-111.9837", "Quantity": "102,928" }, { "State": "Arizona", "lat": "33.3939", "lon": "-111.6965", "Quantity": "108,863" }, { "State": "Arizona", "lat": "33.4495", "lon": "-112.3410", "Quantity": "67,218" }, { "State": "Arizona", "lat": "33.6155", "lon": "-111.9263", "Quantity": "66,556" }, { "State": "Arizona", "lat": "33.6384", "lon": "-112.2073", "Quantity": "147,552" }, { "State": "California", "lat": "33.6145", "lon": "-117.7101", "Quantity": "26,053" }, { "State": "California", "lat": "33.7008", "lon": "-117.9362", "Quantity": "26,057" }, { "State": "California", "lat": "33.7963", "lon": "-116.3845", "Quantity": "497,249" }, { "State": "California", "lat": "33.8274", "lon": "-118.0868", "Quantity": "32,052" }, { "State": "California", "lat": "33.8763", "lon": "-117.7418", "Quantity": "23,521" }, { "State": "California", "lat": "33.8996", "lon": "-118.3669", "Quantity": "26,169" }, { "State": "California", "lat": "34.0302", "lon": "-118.3865", "Quantity": "21,996" }, { "State": "California", "lat": "34.0569", "lon": "-117.2995", "Quantity": "59,135" }, { "State": "California", "lat": "34.0737", "lon": "-117.8859", "Quantity": "4,757" }, { "State": "California", "lat": "34.1820", "lon": "-118.3140", "Quantity": "28,909" }, { "State": "California", "lat": "34.2257", "lon": "-119.1551", "Quantity": "22,569" }, { "State": "California", "lat": "34.2300", "lon": "-118.5500", "Quantity": "22,413" }, { "State": "California", "lat": "34.4130", "lon": "-118.5036", "Quantity": "18,399" }, { "State": "California", "lat": "34.4813", "lon": "-117.3389", "Quantity": "23,268" }, { "State": "California", "lat": "34.6029", "lon": "-118.1464", "Quantity": "24,651" }, { "State": "California", "lat": "37.5038", "lon": "-121.9762", "Quantity": "4" }, { "State": "California", "lat": "38.3525", "lon": "-122.7148", "Quantity": "2" }, { "State": "Colorado", "lat": "38.4766", "lon": "-107.8812", "Quantity": "3,294" }, { "State": "Colorado", "lat": "39.0730", "lon": "-108.5710", "Quantity": "8,704" }, { "State": "Florida", "lat": "27.8400", "lon": "-82.6800", "Quantity": "75,066" }, { "State": "Florida", "lat": "27.9400", "lon": "-82.3200", "Quantity": "135,365" }, { "State": "Florida", "lat": "27.9600", "lon": "-82.3200", "Quantity": "-6" }, { "State": "Florida", "lat": "27.9925", "lon": "-82.7296", "Quantity": "27,274" }, { "State": "Florida", "lat": "28.0661", "lon": "-82.5688", "Quantity": "261" }, { "State": "Florida", "lat": "28.0790", "lon": "-80.6984", "Quantity": "15,720" }, { "State": "Florida", "lat": "28.0941", "lon": "-81.9738", "Quantity": "85,437" }, { "State": "Florida", "lat": "28.1918", "lon": "-82.3812", "Quantity": "97,233" }, { "State": "Florida", "lat": "28.3027", "lon": "-81.4216", "Quantity": "135,193" }, { "State": "Florida", "lat": "28.5622", "lon": "-81.2074", "Quantity": "120,424" }, { "State": "Florida", "lat": "28.6629", "lon": "-81.4176", "Quantity": "110,185" }, { "State": "Florida", "lat": "29.1800", "lon": "-81.0800", "Quantity": "66,725" }, { "State": "Georgia", "lat": "32.8100", "lon": "-83.7100", "Quantity": "3" }, { "State": "Georgia", "lat": "33.3671", "lon": "-84.7647", "Quantity": "87,508" }, { "State": "Georgia", "lat": "33.4600", "lon": "-84.2100", "Quantity": "155,811" }, { "State": "Georgia", "lat": "33.4759", "lon": "-82.0709", "Quantity": "10,875" }, { "State": "Georgia", "lat": "33.5600", "lon": "-84.5400", "Quantity": "17,937" }, { "State": "Georgia", "lat": "33.5610", "lon": "-84.3223", "Quantity": "203,297" }, { "State": "Georgia", "lat": "33.6810", "lon": "-84.1604", "Quantity": "134,700" }, { "State": "Georgia", "lat": "33.8200", "lon": "-84.3600", "Quantity": "122,120" }, { "State": "Georgia", "lat": "33.9168", "lon": "-83.4439", "Quantity": "84,648" }, { "State": "Georgia", "lat": "33.9522", "lon": "-84.1343", "Quantity": "105,862" }, { "State": "Georgia", "lat": "34.0051", "lon": "-84.5752", "Quantity": "-14" }, { "State": "Georgia", "lat": "34.0076", "lon": "-84.5769", "Quantity": "204,888" }, { "State": "Georgia", "lat": "34.0600", "lon": "-83.9800", "Quantity": "104,291" }, { "State": "Georgia", "lat": "34.1900", "lon": "-84.1200", "Quantity": "186,459" }, { "State": "Idaho", "lat": "42.9101", "lon": "-112.4605", "Quantity": "5,524" }, { "State": "Idaho", "lat": "43.6048", "lon": "-116.3496", "Quantity": "14,476" }, { "State": "Illinois", "lat": "41.5300", "lon": "-87.8500", "Quantity": "54,989" }, { "State": "Illinois", "lat": "41.7200", "lon": "-88.0300", "Quantity": "72,366" }, { "State": "Illinois", "lat": "42.0500", "lon": "-87.8300", "Quantity": "59,164" }, { "State": "Illinois", "lat": "42.1000", "lon": "-87.9700", "Quantity": "49,074" }, { "State": "Illinois", "lat": "42.1300", "lon": "-88.3300", "Quantity": "77,454" }, { "State": "Illinois", "lat": "42.2300", "lon": "-87.9300", "Quantity": "51,251" }, { "State": "Illinois", "lat": "42.2600", "lon": "-88.9700", "Quantity": "57,571" }, { "State": "Indiana", "lat": "39.6292", "lon": "-86.1252", "Quantity": "24,227" }, { "State": "Indiana", "lat": "39.6303", "lon": "-86.1249", "Quantity": "1,074" }, { "State": "Indiana", "lat": "39.7613", "lon": "-86.3488", "Quantity": "12,319" }, { "State": "Indiana", "lat": "39.7634", "lon": "-86.3489", "Quantity": "1,027" }, { "State": "Indiana", "lat": "40.0028", "lon": "-86.1227", "Quantity": "901" }, { "State": "Indiana", "lat": "41.4900", "lon": "-87.4700", "Quantity": "83,677" }, { "State": "Kentucky", "lat": "38.1438", "lon": "-85.6751", "Quantity": "-85" }];  
            var data1 = [];  
            var tmp = '';  
            var formatedVal = 0;  
            if (selectMap == "0") {  
                var H = Highcharts,  
                             map = H.maps['countries/us/us-all'],  
                                chart;  
            }  
            else {  
                var H = Highcharts,  
                                  map = H.maps[selectMap],  
                                     chart;  
            }  
            $.each(jsdata, function (ix, entry) {  
                if (Object.keys(entry).length >= 4) {  
                    tmp = entry[zPoint].replace(/\,/g, '').replace(/\$/g, '').replace(/\%/g, '').replace(/\(/g, '').replace(/\)/g, '');  
                    if (isNaN(tmp)) {  
                        entry.z = entry[zPoint];  
                    }  
                    else {  
  
                    }  
                    data1.push(entry);  
                }  
            });  
            chart = $('#container').highcharts('Map', {  
                chart: {  
                    borderWidth: 1  
                },  
                title: {  
                    text: 'Bubble map'  
                },  
                subtitle: {  
                    text: 'Bubble map sub title'  
                },  
  
                tooltip: {  
                    pointFormat: '{point.State}: {point.Quantity}'  
                },  
  
                mapNavigation: {  
                    enabled: true,  
                    buttonOptions: {  
                        verticalAlign: 'bottom'  
                    }  
                },  
                xAxis: {  
                },  
                yAxis: {  
                },  
                legend: {  
                    enabled: true,  
                    title: {  
                        style: {  
                            color: (Highcharts.theme && Highcharts.theme.textColor) || 'black'  
                        }  
                    },  
                    layout: 'vertical',  
                    align: 'right',  
                    verticalAlign: 'bottom',  
                    floating: true,  
                    valueDecimals: 0,  
                    valueSuffix: '$',  
                    backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || 'rgba(255, 255, 255, 0.85)',  
                    symbolRadius: 0,  
                    symbolHeight: 14  
                },  
                series: [{  
                    mapData: map,  
                    borderColor: '#E0E0E0',  
                    colour: '#E0E0E0',  
                    showInLegend: false,  
                    enableMouseTracking: true,  
                    cursor: 'pointer',  
                    dataLabels: {  
                        enabled: true,  
                        format: '{point.properties.postal-code}',  
                        textDecoration: 'none',  
                        style: { "color": "darkgrey", "fontWeight": "bold", "HcTextStroke": "0px rgba(0,0,0,0.5)" }  
                    },  
                    events: {  
                        click: function (e) {  
                            e.point.zoomTo();  
                        }  
                    },  
                },  
                {  
                    type: 'mapbubble',  
                    color: '#E0E0E0',  
                    dataLabels: {  
                        enabled: true,  
                        formatter: function () {  
                        }  
                    },  
                    enableMouseTracking: true,  
                    joinBy: ['iso-a2', 'code'],  
                    name: zPoint,  
                    data: data1,  
                    minSize: $("#mapMinBubSize").val(),  
                    maxSize: $("#mapMaxBubSize").val(),  
                    color: $("#mapColor").val(),  
                    displayNegative: true,  
                    sizeBy: 'width',  
                    cursor: 'pointer',  
                    negativeColor: Highcharts.getOptions().colors[0]  
                }  
                ],  
                chart: {  
                    marginRight: 50  
                },  
                exporting: {  
                    enabled: false  
                }  
            });  
        }  
  
    </script>  
</head>  
<body>  
    Bubble Map Demo - SibeeshPassion  
    <br />  
    <br />  
    <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>  
    <label>Min Bubble Size</label>  
    <input type="number" value="8" min="1" id="mapMinBubSize" title="Type Bubble Min Size." />  
    <label>Max Bubble Size</label>  
    <input type="number" min="1" value="40" id="mapMaxBubSize" title="Type Bubble Max Size." />  
    <label>Color</label>  
    <input type="color" value="#BAD6F2" id="mapColor" title="Select Bubble Color." />  
    <label>Select Map</label>  
    <select name="tech" id="mapSelectMap" class="tech" title="Select Map.">  
        <option value="0">Select Map</option>  
        <option value="countries/us/us-all" selected="selected">US alone</option>  
        <option value="custom/world">Custom World</option>  
    </select>  
    <div id="apply" style="cursor: pointer; background-color: red; color: white; width: 100px; padding: 5px; float: right;">Apply Settings</div>  
</body>  
  
</html>   

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید