如何在AngularJS中使用amMap?

时间:2017-05-22 06:25:47

标签: javascript angularjs amcharts ammap

我在我的Web应用程序中使用amCharts库来呈现所有图表。它们工作正常,但我需要在页面上添加mapChart。我对mapCharts和其他图表并不熟悉,因为使用它似乎需要采用与其他图表不同的方法。

请查看我的代码设置,看看代码中可能出现的问题。

以下代码将库添加到索引文件中:

<script type="text/javascript" src="bower_components/ammap3/ammap/ammap.js">
</script>
<script type="text/javascript" 
src="bower_components/ammap3/ammap/maps/js/worldLow.js"></script>

我像这样编写了控制器:

.controller('MapChartCtrl', ['$scope', '$timeout', function ($scope, $timeout) {

$scope.amChartOptions = {
          type: 'map',
          theme: 'blur',
          zoomControl: { zoomControlEnabled: false, panControlEnabled: false 
},

data: {
    map: 'worldLow',
    zoomLevel: 3.5,
    zoomLongitude: 10,
    zoomLatitude: 52,

    areas: [
      { title: 'Austria', id: 'AT', color: '#62bbb2', customData: '1 
                244', groupId: '1'},
      { title: 'Ireland', id: 'IE', color: '#62bbb2', customData: '1 
                342', groupId: '1'},
      { title: 'Denmark', id: 'DK', color: '#62bbb2', customData: '1 
                973', groupId: '1'},
      { title: 'Finland', id: 'FI', color: '#62bbb2', customData: '1 
                573', groupId: '1'},
      { title: 'Sweden', id: 'SE', color: '#62bbb2', customData: '1 
                084', groupId: '1'},
      { title: 'Great Britain', id: 'GB', color: '#62bbb2', 
                customData: '1 452', groupId: '1'}
    ]
},

areasSettings: {
    rollOverOutlineColor: "#62bbb2",
    rollOverColor: "#62bbb2",
    alpha: 0.8,
    unlistedAreasAlpha: 0.2,
    unlistedAreasColor: "#bfbfbf",
    balloonText: '[[title]]: [[customData]] users'},
    categoryField: "title",

    legend: {
        width: '100%',
        marginRight: 27,
        marginLeft: 27,
        equalWidths: false,
        backgroundAlpha: 0.3,
        backgroundColor: "#bfbfbf",
        borderColor: "#bfbfbf",
        borderAlpha: 1,
        top: 362,
        left: 0,
        horizontalGap: 10,
        data: [
        {
          title: 'over 1 000 users',
          color: '#62bbb2'
        },
        {
          title: '500 - 1 000 users',
          color: '#b9f2a1'
        },
        {
          title: '100 - 500 users',
          color: '#ed7878'
        },
        {
          title: '0 - 100 users',
          color: '#e1e1e1'
        }
    ]
},

export: {
    enabled: true
},

pathToImages: 'bower_components/amcharts/dist/amcharts/images/'
}}])




   <div class="panel-heading">Map Chart</div>
 <div ng-controller="MapChartCtrl" style="height: 400px; width: 100%;">
 <am-chart id="MapChart" options="amChartOptions"></am-chart>
 </div> 

1 个答案:

答案 0 :(得分:0)

<强>控制器:

.directive('myElem',
 function () {
   return {
       restrict: 'E',
       replace:true,

       template: '<div id="chartdiv" style="min-width: 310px; height: 400px; margin: 0 auto"></div>',
       link: function (scope, element, attrs) {

            var chart = false;

            var initChart = function() {
              if (chart) chart.destroy();
              var config = scope.config || {};
              var targetSVG = "M9,0C4.029,0,0,4.029,0,9s4.029,9,9,9s9-4.029,9-9S13.971,0,9,0z M9,15.93 c-3.83,0-6.93-3.1-6.93-6.93S5.17,2.07,9,2.07s6.93,3.1,6.93,6.93S12.83,15.93,9,15.93 M12.5,9c0,1.933-1.567,3.5-3.5,3.5S5.5,10.933,5.5,9S7.067,5.5,9,5.5 S12.5,7.067,12.5,9z";
               chart = AmCharts.makeChart("chartdiv", {
                   type: "map",
                   projection: "winkel3",
                   theme: "light",
                   imagesSettings: {
                     rollOverColor: "#089282",
                     rollOverScale: 3,
                     selectedScale: 3,
                     selectedColor: "#089282",
                     color: "#13564e"
                   },

                   areasSettings: {
                     unlistedAreasColor: "#15A892",
                     outlineThickness: 0.1
                   },

                   dataProvider: {
                     map: "worldLow",
                     images: [ {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Vienna",
                       latitude: 48.2092,
                       longitude: 16.3728
                     }, {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Minsk",
                       latitude: 53.9678,
                       longitude: 27.5766
                     }, {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Brussels",
                       latitude: 50.8371,
                       longitude: 4.3676
                     }, {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Sarajevo",
                       latitude: 43.8608,
                       longitude: 18.4214
                     }, {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Sofia",
                       latitude: 42.7105,
                       longitude: 23.3238
                     }, {
                       svgPath: targetSVG,
                       zoomLevel: 5,
                       scale: 0.5,
                       title: "Zagreb",
                       latitude: 45.8150,
                       longitude: 15.9785
                     }
                     ]
                   },
                   export: {
                     enabled: true
                   },

                  pathToImages: 'bower_components/amcharts/dist/amcharts/images/'
        });


            };
            initChart();

       }         
   }
   });

<强> HTML:

<my-elem></my-elem>