Javascript Google Maps API CIRCLES - 显示鼠标悬停的数字信息

时间:2016-09-30 13:06:11

标签: javascript jquery google-maps

我开始使用以下谷歌地图示例代码。它显示了一个在城市上空盘旋的圈子,人口越多,圈子就越大。我希望不仅可以显示圈子,还可以显示鼠标悬停时的数字数据。这会很棒。

任何人都可以帮帮我吗?

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Circles</title>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      // This example creates circles on the map, representing populations in North
      // America.

      // First, create an object containing LatLng and population for each city.
      var citymap = {
        chicago: {
          center: {lat: 41.878, lng: -87.629},
          population: 2714856
        },
        newyork: {
          center: {lat: 40.714, lng: -74.005},
          population: 8405837
        },
        losangeles: {
          center: {lat: 34.052, lng: -118.243},
          population: 3857799
        },
        vancouver: {
          center: {lat: 49.25, lng: -123.1},
          population: 603502
        }
      };

      function initMap() {
        // Create the map.
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: {lat: 37.090, lng: -95.712},
          mapTypeId: 'terrain'
        });

        // Construct the circle for each value in citymap.
        // Note: We scale the area of the circle based on the population.
        for (var city in citymap) {
          // Add the circle for this city to the map.
          var cityCircle = new google.maps.Circle({
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35,
            map: map,
            center: citymap[city].center,
            radius: Math.sqrt(citymap[city].population) * 100
          });
        }
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

您可以在for循环中添加处理程序:

handlePopulation(cityCircle, citymap[city].population, map);

然后为每个圈子创建InfoWindow

function handlePopulation(cityCircle, popultion, map){
    var infoWindow= new google.maps.InfoWindow({
        content: popultion.toString(),
        position: cityCircle['center']
        });

        google.maps.event.addListener(cityCircle, 'mouseover', function(ev){

            infoWindow.open(map);
        });

        google.maps.event.addListener(cityCircle, 'mouseout', function(ev){
            infoWindow.close();
        });
  }

JS小提琴:https://jsfiddle.net/rh54o4th/1/