如何将动态位置数据加载到angular.js

时间:2018-03-16 09:22:59

标签: javascript angularjs google-maps

我正在研究在Angular.js&amp ;; MongoDB的。现在我正在将Google Heatmap静态热图实现到我的HTML视图中,并且它正常显示。

现在我已经创建了一个API来从我的mongo表中获取用户位置详细信息。我使用ajax调用来调用我的API URL并返回用户位置数据。在这个阶段,一切都很顺利。

让我们先尝试分享我的代码:

HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Google Heatmap</title>
    </head>
    <body>
        <div id="map"></div>
    </body>
</html>

的JavaScript

var map, yellowHeatmap, redHeatmap;

function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
        zoom: 13,
        center: {lat: 37.775, lng: -122.434},
        mapTypeId: 'satellite'
    });

    yellowHeatmap = new google.maps.visualization.HeatmapLayer({
        data: getYelloPoints(),
        map: map
    });

    redHeatmap = new google.maps.visualization.HeatmapLayer({
        data: getRedPoints(),
        map: map
    });

    var yellowGradient = [
        'rgba(255, 255, 0, 0)',
        'rgba(255, 255, 0, 1)'
    ]
    yellowHeatmap.set('gradient', yellowHeatmap.get('gradient') ? null : yellowGradient);

    var redGradient = [
        'rgba(255, 0, 0, 0)',
        'rgba(255, 0, 0, 1)'
    ]
    redHeatmap.set('gradient', redHeatmap.get('gradient') ? null : redGradient);
}

$.ajax({
    url: '/api/user/getCountryMerchantYellowHeat',
    type: 'GET',
    processData: false,
    contentType: false,
    success: function(data) {
        var length = data.data.length;
        getYelloPoints(data.data, length);
    }
});

function getYelloPoints(data, length) {
    var markers = [];
    for (var i = 0; i < length; i++) {
        var location = new google.maps.LatLng(data[i].address[0].lat, data[i].address[0].long);
        markers.push(location);
    }
}

function getRedPoints() {
    return [
        new google.maps.LatLng(37.798719, -122.429092),
        new google.maps.LatLng(37.798944, -122.429145)
    ];
}

如果您注意到我在ajax成功中调用getYelloPoints()函数来传递响应数据。我已经仔细检查过我在getYelloPoints()函数中获取了所有数据。现在的问题是,当我尝试循环时,数据位置没有显示在热图中,在这个阶段,我不知道如何解决地图问题。

如果使用此循环并在同一位置传递静态位置10次,那么地图正在工作,但如果循环从API获取的数据是错误的。

// THIS IS WORKING PERFECT WITH STATIC LOOP AND STATIC LOCATION
var markers = [];
for( var i = 1; i <= 10; i++) {
    var location = new google.maps.LatLng(37.769544, -122.506104);
    markers.push(location);
}
return markers;

你知道在angular.js中加载热图吗?

感谢。

0 个答案:

没有答案