Ответ 1
Update
Так как heatmap.js v1 теперь удален > Я также включил пример, основанный на текущей версии v2, здесь:
http://jsfiddle.net/Fresh/pz4usuLe/
Это основано на примере Google Maps, найденном на веб-сайте Heatmap.
Оригинальный ответ
Я посмотрел на это, и это определенно сбивает с толку. Я взял ваш код и получил его для работы здесь:
http://jsfiddle.net/Fresh/nRQbd/
(Обратите внимание, что исходный пример выше не работает, поскольку v1 был удален, чтобы увидеть, как это работает с v2, см. это http://jsfiddle.net/Fresh/pz4usuLe/)
Обратите внимание, как я изменил datapoints в testData, чтобы получить результат, нарисованный на карте:
var testData = {
max: 3,
data: [{
lat: 48.3333,
lng: 16.35,
count: 100
}, {
lat: 51.465558,
lng: 0.010986,
count: 100
}, {
lat: 33.5363,
lng: -5.044,
count: 100
}]
};
Я также увеличил значение счета для каждой из этих точек; точечное значение 1 не видно, но увеличение его значения (например, до 100) увеличивает интенсивность цвета отображаемой точки (тем самым делая ее видимой!).
Проблема возникает, когда точки выводятся за пределы видимой границы карты. Я вывел это путем отладки:
heatmap.setDataSet(testData);
(uncomment "debugger;" в скрипте для отладки кода в веб-консоли)
Код в файле heatmap-gmaps.js, который вызывает отображение данных, не отображается:
while(dlen--){
latlng = new google.maps.LatLng(d[dlen].lat, d[dlen].lng);
if(!currentBounds.contains(latlng)) {
continue;
}
me.latlngs.push({latlng: latlng, c: d[dlen].count});
point = me.pixelTransform(projection.fromLatLngToDivPixel(latlng));
mapdata.data.push({x: point.x, y: point.y, count: d[dlen].count});
}
Похоже, что ни один из данных в вашем примере не содержится в текущих границах области отображаемой карты. Следовательно, "! CurrentBounds.contains(latlng)" всегда истинно, не добавляя никаких точек к объекту mapdata.
Это предположение верно, потому что первая точка вашего набора данных (т.е. lat: 33.5363, lng: -117.044) фактически находится в Сан-Диего (используйте это для подтверждения http://itouchmap.com/latlong.html), который не отображается на отображаемой карте.