2017-08-01 101 views
0

我使用的是带有mongodb的angularjs。用angularjs生成lat-lng的热图

我有包含用户坐标的表。

{ "mac" : "aa:22:01:d2:e6:f9","lat" : 33.53625,"lng" : -111.92674, "time" : 2017-07-12T04:44:13.707Z} 
{ "mac" : "aa:22:01:d2:e6:f9","lat" : 33.53625,"lng" : -111.92674, "time" : 2017-07-12 04:44:13.707Z} 
{ "mac" : "aa:22:01:d2:e6:f9","lat" : 33.53625,"lng" : -111.92674, "time" : 2017-07-12 04:46:59.707Z} 
{ "mac" : "aa:22:01:d2:e6:f9","lat" : 33.53625,"lng" : -111.92674, "time" : 2017-07-12 04:47:29.707Z} 

我想显示热图。任何人都可以指出实现这一目标的最佳方式。

我将有建筑图像,我需要稍后在后台调整。

+0

https://developers.google.com/maps/documentation/javascript/heatmaplayer – duncan

回答

1

基本上你需要将你的数据映射到一个google.maps.LatLng对象的数组。然后初始化映射,使用映射数据初始化热图层并将热图贴图分配给映射。检查sample

您还需要包含visualization库,因为HeatmapLayer在那里。

function initMap() { 
 

 
    /* Data points defined as an array of LatLng objects */ 
 
    var data = [{ 
 
    "mac": "aa:22:01:d2:e6:f9", 
 
    "lat": 33.53625, 
 
    "lng": -111.92674, 
 
    "time": '2017-07-12T04:44:13.707Z' 
 
    }, { 
 
    "mac": "aa:22:01:d2:e6:f9", 
 
    "lat": 33.53625, 
 
    "lng": -111.92674, 
 
    "time": '2017-07-12 04:44:13.707Z' 
 
    }, { 
 
    "mac": "aa:22:01:d2:e6:f9", 
 
    "lat": 33.53625, 
 
    "lng": -111.92674, 
 
    "time": '2017-07-12 04:46:59.707Z' 
 
    }, { 
 
    "mac": "aa:22:01:d2:e6:f9", 
 
    "lat": 33.53625, 
 
    "lng": -111.92674, 
 
    "time": '2017-07-12 04:47:29.707Z' 
 
    }]; 
 

 
    var heatmapData = data.map(function(item) { 
 
    return new google.maps.LatLng(item.lat, item.lng) 
 
    }); 
 

 
    var center = new google.maps.LatLng(33.53625, -111.92674); 
 

 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    center: center, 
 
    zoom: 13, 
 
    mapTypeId: 'satellite' 
 
    }); 
 

 
    var heatmap = new google.maps.visualization.HeatmapLayer({ 
 
    data: heatmapData 
 
    }); 
 
    heatmap.setMap(map); 
 
}
<script async defer type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&libraries=visualization&callback=initMap"></script> 
 

 
<div id="map" style="width:500px;height:150px"></div>

+0

有什么办法在地图设置自定义背景图片?还有如何根据坐标设置地图中心。所以所有的坐标都可以显示在区域中。 –

+0

_是否有任何方法在地图上设置自定义背景图像?_ - 这是另一个问题,但我相信这是可能的 - 只需在网络上搜索此问题即可。 _如何根据坐标设置地图中心。所以所有的坐标都可以显示在area_中 - 因为你有所有的数据可以计算经度和纬度,然后实例化中心点'var center = new google.maps.LatLng(calcedLat,calcedLng);' – codtex