2014-05-21 42 views
0

我正在創建一個簡單的谷歌地圖與熱圖層。重要的是,我沒有設置熱圖的數據屬性最初:谷歌地圖API - heatmap.set(數據)屬性

var map, heatmap; 
var home = new google.maps.LatLng(37.75, -122.4) 

function initialize() { 
    var mapOptions = { 
    zoom: 10, 
    minZoom: 3, 
    center: home, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    disableDefaultUI: true, 
    panControl: false, 
    zoomControl: true, 
    mapTypeControl: false, 
    scaleControl: false, 
    streetViewControl: false, 
    overviewMapControl: false 
    }; 

    var styles = [ 
    { 
    stylers: [ 
     { "gamma": 0.83 }, 
     { hue: "#00ffe6" }, 
     { saturation: -20 } 
    ] 
    },{ 
    featureType: "road", 
    elementType: "geometry", 
    stylers: [ 
     { lightness: 100 }, 
     { visibility: "simplified" } 
    ] 
    },{ 
    featureType: "road", 
    elementType: "labels", 
    stylers: [ 
     { visibility: "off" } 
    ] 
    } 
]; 

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

    map.setOptions({styles: styles}); 


    heatmap = new google.maps.visualization.HeatmapLayer({ 
    radius: 20, 
    opacity: 0.5 
    }); 

    heatmap.setMap(map); 

然後創建應設置熱圖的數據屬性的函數,像這樣:

function update(){ 

    all = [[37.782551, -122.445368, 0.75, 0.25], 
        [37.782745, -122.444586, 0.5, 0.5], 
        [37.782842, -122.443688, 0.2, 0.8]] 

    temp = [] 

    for (var i = 0; i < all.length; i++){ 
     temp.push(new google.maps.LatLng(all[i][0], all[i][1]), all[i][2]) 
    } 


    var newdata = new google.maps.MVCArray(temp); 
    heatmap.set('data', heatmap.get('data') ? null : newdata) 


    } 

最後,我打電話在bounds_changed事件,更新功能和初始化地圖:

google.maps.event.addListener(map, 'bounds_changed', function() { 
    update; 
    }); 

} 

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

然而,當我檢查heatmap變量控制檯,數據屬性爲null。爲什麼是這樣?以及如何在函數調用中設置數據屬性?

+0

您是否包含可視化庫? – geocodezip

+1

它適用於我[[小提琴](http://jsfiddle.net/Sf5s2/))。刪除了'heatmap.get('data')? null:heatmap.set調用中的newdata'。 – geocodezip

+0

謝謝,工作! – user1452494

回答

1

致電heatmap.set('data', heatmap.get('data') ? null : newdata);有問題。

刪除它,它的工作原理。

working fiddle