我正在使用 websockets 将数据从服务器发送到客户端。这很好用,例如,我可以显示服务器在收到消息时发送给客户端的消息。我能够将其转换为经度和纬度。
因此,当从服务器接收到数据时,它应该在我的 html 中绘制到地图上,但它似乎根本没有绘制任何东西。
我对 javascript 完全陌生,所以不确定我的代码是否正确。我想要做的是很快收到数据,将其直接绘制到地图上,从而生成热图。这是代码的 javascript 方面:
<script>
$(document).ready(function() {
var ws = new WebSocket("ws://" + "localhost" + ":" + "8888" + "/ws");
var London = new google.maps.LatLng(51.507335, -0.127683);
var map = new google.maps.Map(document.getElementById('map_canvas'), {
center: London,
zoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var pointArray = new google.map.MVCArray([]);
ws.onmessage = function(evt){
//$("#display").append(evt.data + "<br />");
var msg = JSON.parse(evt.data);
var coordinates = msg.coordinates.coordinates;
var latLng = new google.maps.LatLng(coordinates[1], coordinates[0]);
console.log('received');
pointArray.push(latLng);
var heatmap = new google.maps.visualization.HeatmapLayer({
data: pointArray
});
heatmap.setMap(map);
//$("#display").append(latLng + "<br />");
//console.log(evt.data);
};
ws.onclose = function(evt) {alert("Server connection terminated");};
});
$("#open").click(function(evt){
evt.preventDefault();
$.post("/", $("#eventForm").serialize());
});
</script>
是否有一种方法可以在接收到数据时将其存储到数组中,但是我不确定如何使用数组中的元素更新地图是否已接收到。谢谢