サーバーからクライアントにデータを送信するために 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>
データが受信されると配列に格納されるようにする方法はありますか?しかし、受信した配列内の要素でマップを更新する方法がわかりません。ありがとう