setData - 如何从Code Behind中的函数传递我的数据?

时间:2015-08-26 19:37:38

标签: javascript jquery heatmap

我正在使用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

1 个答案:

答案 0 :(得分:1)

经过大量的试验和错误后,我才能使它工作。从本质上讲,这就是它现在的工作方式:

  • 我的代码隐藏(VB)函数仍然返回一个字符串。但是,在构建字符串时我不得不使用两个双引号。我交替使用双引号和单引号,但根本没有帮助。
  • 一旦我在Javascript端收到字符串消息,我就会使用JSON.parse(msg.d),其中msg是VB函数返回的字符串。