如何使用数据库中的数据动态修改Google Maps Heatmap位置

时间:2016-03-02 11:06:26

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

我正在尝试使用有角度的谷歌地图: https://github.com/allenhwkim/angularjs-google-maps/blob/master/testapp/

测试数据: https://github.com/allenhwkim/angularjs-google-maps/blob/master/testapp/taxi-data.js

Javascript示例:

var taxiData = [
  new google.maps.LatLng(37.782551, -122.445368),
  new google.maps.LatLng(37.782745, -122.444586),
];

我使用AngularJS进行查询,并在列表数据[]中检索纬度和经度。

如何动态修改上面的代码,以便"初始化"新的google.maps.LatLng和我的数据来自DB?

我在伪代码中拥有的内容示例:

var data = [];
var taxiData = [];

//对存储数据的角度调用,所以我们有数据:

data = someCall..

将实例动态添加到taxiData列表中:

for (var i = 0; i < data.length; i++) {
    taxiData.push(new google.maps.LatLng(data[i].Latitude, data[i].Longitude));
}

1 个答案:

答案 0 :(得分:3)

假设您的数据库数据可通过http get json格式访问(在下面的示例中,数据是从taxiData.json file检索的),以下示例演示了如何在加载数据后初始化热图图层。

示例

&#13;
&#13;
angular.module('mapApp', ['ngMap'])
.controller("MapCtrl", function($scope,$http,NgMap){

  $scope.taxiData = [];

  NgMap.getMap().then(function(map) {

    $scope.taxiData = [];

    $http.get('https://rawgit.com/vgrem/6d9c464ab034f5b93295/raw/9ca3819aa8270823da64cba6f91d24945cc52940/taxiData.json').success(function(data) {
         $scope.taxiData = data.map(function(item){
             return new google.maps.LatLng(item.lat, item.lng);
         });

         var layer = $scope.map.heatmapLayers.taxiDataMap;
         layer.setData($scope.taxiData);
    });
  });
 
  
});
&#13;
<script src="https://maps.google.com/maps/api/js?libraries=visualization"></script>
<script src="https://code.angularjs.org/1.3.15/angular.js"></script>
<script src="https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/scripts/ng-map.js"></script>


<div ng-app="mapApp" ng-controller="MapCtrl">
    <ng-map zoom="13" center="37.774546, -122.433523" map-type-id="SATELLITE">
        <heatmap-layer id="taxiDataMap" data="taxiData"></heatmap>
    </ng-map>
  </div> 
&#13;
&#13;
&#13;

JSFiddle