2014-01-28 41 views
2

我正在使用谷歌熱圖,我正試圖在地圖上加載超過1000個指針,但我不確定它的工作。谷歌熱圖 - 在地圖上沒有指針

這是我的代碼:

 var map, pointarray, heatmap; 

     var gradient = [ 
      'rgba(0, 255, 255, 0)', 
      'rgba(0, 255, 255, 1)', 
      'rgba(0, 191, 255, 1)', 
      'rgba(0, 127, 255, 1)', 
      'rgba(0, 63, 255, 1)', 
      'rgba(0, 0, 255, 1)', 
      'rgba(0, 0, 223, 1)', 
      'rgba(0, 0, 191, 1)', 
      'rgba(0, 0, 159, 1)', 
      'rgba(0, 0, 127, 1)', 
      'rgba(63, 0, 91, 1)', 
      'rgba(127, 0, 63, 1)', 
      'rgba(191, 0, 31, 1)', 
      'rgba(255, 0, 0, 1)' 
     ] 

var taxiData = [ 
new google.maps.LatLng(43.3128954, 10.5320177), 
new google.maps.LatLng(43.4121300, 10.4157520), 
.... 
new google.maps.LatLng(43.3116784, 10.5298907), 
new google.maps.LatLng(43.3416850, 10.5290120) 
] 

     function initialize() { 
      var mapOptions = { 
       zoom: 13, 
       dissipating: false, 
       center: new google.maps.LatLng(43.3128954, 10.5320177), 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

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

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

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

      heatmap.setMap(map); 
      heatmap.set('gradient', heatmap.get('gradient') ? null : gradient); 
     } 

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

     function changeGradient() { 
      var gradient = [ 
       'rgba(0, 255, 255, 0)', 
       'rgba(0, 255, 255, 1)', 
       'rgba(0, 191, 255, 1)', 
       'rgba(0, 127, 255, 1)', 
       'rgba(0, 63, 255, 1)', 
       'rgba(0, 0, 255, 1)', 
       'rgba(0, 0, 223, 1)', 
       'rgba(0, 0, 191, 1)', 
       'rgba(0, 0, 159, 1)', 
       'rgba(0, 0, 127, 1)', 
       'rgba(63, 0, 91, 1)', 
       'rgba(127, 0, 63, 1)', 
       'rgba(191, 0, 31, 1)', 
       'rgba(255, 0, 0, 1)' 
      ] 
      heatmap.set('gradient', heatmap.get('gradient') ? null : gradient); 
     } 

     function changeRadius() { 
      heatmap.set('radius', heatmap.get('radius') ? null : 20); 
     } 

     function changeOpacity() { 
      heatmap.set('opacity', heatmap.get('opacity') ? null : 0.2); 
     } 

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

我在此鏈接創建了完整的代碼演示:http://jsfiddle.net/8b85R/

fixed fiddle(點擊按鈕工作)

我不明白爲什麼我有很多藍色區域,但只有2個指針!我期待的更類似於Google演示(https://developers.google.com/maps/documentation/javascript/examples/layer-heatmap),您可以在其中找到所有500個指針。

我需要你的幫助! 謝謝!

+0

你是什麼意思的「指針」?熱圖不會顯示個別點。當你點擊按鈕時,你的jsfiddle有錯誤。 [固定小提琴](http://jsfiddle.net/8b85R/1/embedded/result/)(即放大顯示所有點) – geocodezip

+0

對於「指針」我的意思是確切的位置google.maps.LatLng座標上地圖 – MassiCiaoCiao

回答

1

更多類似這樣的:http://jsfiddle.net/6JSe7/1/

我所做的只是撥下來(或向上數明智的)透明度,在點在那裏,在增加縮放級別,但他們幾乎看不出來(我指的是相當不錯不可測的),並且增加了散熱選項:

heatmap = new google.maps.visualization.HeatmapLayer({ 
      data: pointArray, 
      dissipating: true, 
      radius: 35 

     }); 

     heatmap.setMap(map); 
     heatmap.set('gradient', heatmap.get('gradient') ? null : gradient); 
     heatmap.set('opacity', '0.9'); 
+0

它現在看起來更好,但它不像我想要的。我試圖更好地解釋.. 如果你看谷歌演示(你可以找到關於這個主題的鏈接),如果你縮放地圖,你可以看到google.maps.LatLng座標的確切位置,但這不會發生在我的演示。 任何想法? – MassiCiaoCiao