2013-08-01 137 views
1

我有一個映射頁面,它檢索一個JSON響應,並創建相關的點陣加載熱圖。谷歌地圖V3熱圖不會顯示在頁面加載

所有這一切都在所需的初始化查詢中加載在jquery document.ready中調用。

雖然這裏是奇怪的東西,但所有的外部數據都很好,並且填充得很好,點陣也很好。

但是,當我在熱圖上調用setMap(map)方法時,它不顯示。但奇怪的是,如果我使用頁面上的鏈接打開或關閉它,它會顯示。有任何想法嗎??在螢火蟲中完全沒有錯誤。

var map; 
    var markers = []; 
    var markerLatLngArray = []; 


function toggleHeatmap() { 
    heatmap.setMap(heatmap.getMap() ? null : map); 
} 

function initialize() { 

var map_options = { 
center: new google.maps.LatLng(53.4902, -7.96), 
zoom: 7, 
mapTypeId: google.maps.MapTypeId.TERRAIN, 
draggableCursor: 'crosshair', 
mapTypeControl: true, 
scaleControl: true, 
streetViewControl: false, 
overviewMapControl: false, 
overviewMapControlOptions: { 
    opened: false 
    } 
}; 

map = new google.maps.Map(document.getElementById('map_canvas'), map_options); 
google.maps.event.addListenerOnce(map, 'idle', function(){ 
document.getElementById('ajax_loading_icon').style.display = "none"; 
document.getElementById('map_canvas').style.visibility = "visible"; 
}); 


    jQuery.get("<?php echo $data_url; ?>", {}, function(data) { 
    jQuery(data).find("marker").each(function() { 
    var marker = jQuery(this); 

    var latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")), 
          parseFloat(marker.attr("long"))); 

    markerLatLngArray.push(latlng); 

    }); 


    }); 


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

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

    heatmap.setMap(map); 

} 
+0

「this.map」的價值是什麼?它和全球的「地圖」一樣嗎? – geocodezip

+0

@geocodezip對不起,它是同一個,我只是把這個,看看它是不是一些範圍問題,只是在黑暗中拍攝真的。原圖僅爲地圖 – jiraiya

+0

請修正發佈的代碼以反映真實問題。如果這真的是「地圖」,而不是「this.map」,那麼它可能是一個計時問題(地圖在熱圖創建之後纔會初始化)。你能提供一個展示問題的jsfiddle(或者我們可以運行你的代碼的足夠的數據)嗎? – geocodezip

回答

3

這是一個計時問題。直到調用heatmap.setMap之後,纔會初始化映射。

+0

再次感謝幫助。 – jiraiya

+0

geocodezip,非常感謝你的回答 – IgorM