动态更新Google热图图层

时间:2014-06-24 23:30:20

标签: javascript google-maps-api-3

首先,我已经看到了关于这类问题的其他答案,但这有点不同。 所以,我有一个javascript代码,通过php从db获取经度和纬度数据,我实际上能够以至少看起来正确的格式收集数据,但是当我尝试更新图层时,什么都没有显示......各种帮助将不胜感激。

这是js代码: 编辑,现在工作

var Datas = [new google.maps.LatLng(32.7603282,46.343451)];
var pointArray = new google.maps.MVCArray(Datas);

$(document).ready(function() {
$('#gnome').change(function() {
    var inpval=$(this).val();
    $.ajax({
        url: 'php/query.php',
        type: 'POST',
        data: {valor : inpval},
        success: function(data) {
            while(Datas.length > 0) {
               Datas.pop();
            }
            //heatmap.setData(reboot(data));
            pointArray = new google.maps.MVCArray(reboot(data));
            initialize();
        }
    });
});
});

var config = {
"radius": 30,
"element": "heatmapEl",
"visible": true,
"opacity": 40,
"gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" }
};

function initialize() {
  var mapOptions = {
  zoom: 5,
 center: new google.maps.LatLng(32.7603282, 46.343451),
 mapTypeId: google.maps.MapTypeId.SATELLITE
};

 map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);

 pointArray = new google.maps.MVCArray(Datas);

 heatmap = new google.maps.visualization.HeatmapLayer({
data: pointArray
 });

heatmap.setMap(map);
}

function reboot(Ddatas){
alert(Ddatas);
var arraino = [];
for (a in Ddatas) {
arraino.push(new google.maps.LatLng(
    Ddatas[a][0],
    Ddatas[a][1]));
}
alert(arraino);
return (arraino);
 }


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

非常有效的链接http://testingme.altervista.org/progettolpw/index.php

1 个答案:

答案 0 :(得分:0)

您没有正确创建google.maps.LatLng对象。

这是不正确的(它创建一个字符串“new google.maps.LatLng(xxx,yyy)”,这将无法按照您期望的方式工作):

for (a in Ddatas){
  arraino.push("new google.maps.LatLng("+Ddatas[a]+")");
}

请改为:

for (a in Ddatas) {
    arraino.push(new google.maps.LatLng(
        Ddatas[a][0],
        Ddatas[a][1]));
}

working fiddle