Google Visualization Map选择事件未触发

时间:2016-01-11 07:45:27

标签: javascript maps google-visualization handler

以下是绘制地图的代码:

options = {
            mapType: 'styledMap',
            zoomLevel: '2',
            showTip: true,

            useMapTypeControl: true,
            maps: {
                // Your custom mapTypeId holding custom map styles.
                styledMap: {
                    name: 'Styled Map', // This name will be displayed in the map type control.
                    styles: [
                      {
                          featureType: 'poi.attraction',
                          stylers: [{ color: '#fce8b2' }]
                      },
                      {
                          featureType: 'road.highway',
                          stylers: [{ hue: '#0277bd' }, { saturation: -50 }]
                      },
                      {
                          featureType: 'road.highway',
                          elementType: 'labels.icon',
                          stylers: [{ hue: '#000' }, { saturation: 100 }, { lightness: 50 }]
                      },
                      {
                          featureType: 'landscape',
                          stylers: [{ hue: '#259b24' }, { saturation: 10 }, { lightness: -22 }]
                      }
                    ]
                }
            }
        };
        var map = new google.visualization.Map(document.getElementById("div1"));
        map.draw(data, options);

// code for handler

google.visualization.events.addListener(map, 'select', LocationsClick);
    function LocationsClick() {

         //  Custom Code....
        }
    }

但是,当我单击地图中的指针时,不会引发事件并且不会调用我的函数。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

在绘制地图之前尝试设置事件侦听器。

google.load('visualization', '1', { 'packages': ['map'] });
google.setOnLoadCallback(drawMap);

function drawMap() {
  var data = google.visualization.arrayToDataTable([
    ['Country', 'Population'],
    ['China', 'China: 1,363,800,000'],
    ['India', 'India: 1,242,620,000'],
    ['US', 'US: 317,842,000'],
    ['Indonesia', 'Indonesia: 247,424,598'],
    ['Brazil', 'Brazil: 201,032,714'],
    ['Pakistan', 'Pakistan: 186,134,000'],
    ['Nigeria', 'Nigeria: 173,615,000'],
    ['Bangladesh', 'Bangladesh: 152,518,015'],
    ['Russia', 'Russia: 146,019,512'],
    ['Japan', 'Japan: 127,120,000']
  ]);

  var options = {
    mapType: 'styledMap',
    zoomLevel: '2',
    showTip: true,

    useMapTypeControl: true,
    maps: {
      // Your custom mapTypeId holding custom map styles.
      styledMap: {
        name: 'Styled Map', // This name will be displayed in the map type control.
        styles: [
          {
            featureType: 'poi.attraction',
            stylers: [{ color: '#fce8b2' }]
          },
          {
            featureType: 'road.highway',
            stylers: [{ hue: '#0277bd' }, { saturation: -50 }]
          },
          {
            featureType: 'road.highway',
            elementType: 'labels.icon',
            stylers: [{ hue: '#000' }, { saturation: 100 }, { lightness: 50 }]
          },
          {
            featureType: 'landscape',
            stylers: [{ hue: '#259b24' }, { saturation: 10 }, { lightness: -22 }]
          }
        ]
      }
    }
  };

  var map = new google.visualization.Map(document.getElementById("div1"));

  google.visualization.events.addListener(map, 'select', selectHandler);
  
  map.draw(data, options);

  function selectHandler() {
    document.getElementById("div2").innerHTML = JSON.stringify(map.getSelection());
  }  
};
<script src="https://www.google.com/jsapi"></script>
<div id="div1"></div>
<br/>
<div id="div2"></div>