我正在使用Heatmap.js库在Google地图上创建地图叠加层。只要我在标签中对数据进行硬编码,它就能很好地工作。
<script type="text/javascript">
var myLatlng = new google.maps.LatLng(35.20, -90.50);
var myOptions = {
zoom: 5,
center: myLatlng
};
map = new google.maps.Map(document.getElementById("MyMap"), myOptions);
// heatmap layer
heatmap = new HeatmapOverlay(map,{
radius: 15,
maxOpacity: 0.6,
minOpacity: 0.6,
blur: 0,
gradient: {'0':'Green', '0.75':'yellow', '1':'Red'},
scaleRadius: false,
useLocalExtrema: false,
latField: 'lat',
lngField: 'lng',
valueField: 'value'
});
var init = { max: 2, data: [{ lat: 35.6408, lng: -90.7728, value: 1.2},
{ lat: 37.6408, lng: -92.7728, value: 4.8},
{ lat: 36.9438, lng: -91.7428, value: 0.2}]};
heatmap.setData(init);
</script>
但是,我要做的是使用JQuery调用后面的代码中的函数(VB)并使用返回的值来提供数据。像这样:
$(document).ready(function () {
$("#updateMap").click(function () {
$.ajax({
type: "POST",
dataType: "json",
url: "Default.aspx/getPIAFData",
data: "{}",
contentType: "application/json; charset=utf-8",
success: function (data) {
heatmap.setData({ max: 2, data: [data] });
},});});});
我在后面的代码中的函数返回一个字符串,我可以看到(通过alert();)返回正确的字符。但是,Heatmap.js setData函数需要一个对象数组:
var data = {
max: 10,
data: [{datapoint1, datapoint2, datapoint3, etc}]};
每个数据点包含{lat:1234,lng:1234,值:1234}。
我需要找到一种方法将返回字符串解析为Heatmaps.js的正确格式,或者在后面的代码中更改我的函数以返回正确的对象数组。有使用Heatmaps.js库的经验的人从另一个函数(后面的代码)获取数据吗?
非常感谢你。 PC
答案 0 :(得分:1)
经过大量的试验和错误后,我才能使它工作。从本质上讲,这就是它现在的工作方式: