gpt4 book ai didi

node.js - 如何将坐标从 node.js 服务器发送到 leaflet.js 客户端

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:21 25 4
gpt4 key购买 nike

我正在尝试将坐标从 node.js 和 socket.io 服务器 (index.js) 发送到 client.html。在 HTML 客户端中,坐标将由 Leaflet 读取。问题是,client.html中的坐标变量无法读取或NaN

我尝试了一个简单的直接变量启动并按照 Socket.IO 页面中的教程进行操作

服务器(index.js)

var e = require('express')();
var http = require('http').Server(e);
var sio = require('socket.io')(http);

http.listen(3000);

e.get('/', function(req, res) {
res.sendFile(__dirname + '/public/client.html');
});

sio.on('connection', function(socket) {
socket.on('ping', function(msg) {
socket.emit('pong', {lat:parseFloat(35+Math.random()),lon:parseFloat(-106+Math.random())});
});
});

客户端 (client.html)

var socket = io.connect('http://localhost:3000');
socket.on('pong', function(msg) {
console.log("Nilai msg : "+msg);
L.marker([parseFloat(msg.lat),parseFloat(msg.lon)]).addTo(map).bindPopup("("+msg.lat+","+msg.lon+")").openPopup();



var map = L.map('map', {
center: [35.10418, -106.62987],
zoom: 9
});

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(map);

map.on("click", function(){
socket.emit('ping', {msg: 'Hello'});

});

我希望 map 会显示具有相应坐标的标记,但实际输出是 Error: Invalid LatLng object: (NaN, NaN)

最佳答案

在 socket.io 中,pingpong是保留事件和 shouldn't be used in your app .您的浏览器在 pong 事件中收到的不是您所期望的:

ms (Number) number of ms elapsed since ping packet (i.e.: latency).

这就是为什么 msg.latmsg.lon 未定义且无法解析的原因。

将事件名称更改为其他名称,比如 fromserverfrombrowser 就可以了:

服务器端:

io.on('connection', function(socket){
socket.on('frombrowser', function(msg){
var o = {lat:parseFloat(35+Math.random()),lon:parseFloat(-106+Math.random())};
socket.emit('fromserver', o);
});
});

客户端:

socket.on('fromserver', function(msg) {
console.log(msg);
console.log([parseFloat(msg.lat), parseFloat(msg.lon)]);
});

map.on("click", function(){
socket.emit('frombrowser', {msg: 'Hello'});
});

关于node.js - 如何将坐标从 node.js 服务器发送到 leaflet.js 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54015712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com