Google热图根据强度更改颜色

时间:2015-07-10 13:55:06

标签: javascript google-maps google-maps-api-3 maps heatmap

我使用谷歌地图js api拍了一张热图。所有的位置都是加权的,并希望颜色代表重量而不是我得到一个红色点,淡化为黄色,然后是绿色。这不仅仅是一个测试,我将填充数据库中的邮政编码和权重

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=visualization"></script>

function initialize() {
    geocoder = new google.maps.Geocoder();
  var mapProp = {
    center:new google.maps.LatLng(40.785091,-73.968285),
    zoom:11,
    mapTypeId:google.maps.MapTypeId.ROADMAP
  };
  var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);

  codeAddress("10001", 6119);
  codeAddress("10002", 5180);
  codeAddress("10003", 4110);
  codeAddress("10004", 899);
  codeAddress("10005", 520);
  codeAddress("10006", 599);

   function codeAddress(zip, noAccidents) {
    //var address = document.getElementById("address").value;
geocoder.geocode( { 'address': zip}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);

        var hotSpot = results[0].geometry.location;
        console.log(hotSpot + " " + noAccidents);

        var heatMapZip = [
        {location: hotSpot, weight: noAccidents}

        ];

       var color =[
            "#ff0000",
            "#00ff00"
        ];

        var heatmap = new google.maps.visualization.HeatmapLayer({
          data: heatMapZip,
          radius: 50,
          dissapating: false
        });
        heatmap.setMap(map);

      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }


}

google.maps.event.addDomListener(window, 'load', initialize);

MAP

1 个答案:

答案 0 :(得分:4)

您应该使用函数heatmap.set('gradient', gradient);来设置热图的颜色。颜色可以通过事故的数量以及数据集中#的最大值和最小值来计算。

我为此创造了一个小提琴,希望它有所帮助。

http://jsfiddle.net/hzy0y6es/