如何将GoogleMaps标记广播到所有连接的套接字?

//CLIENT SIDE // This event listener will call addMarker() when the map is clicked. google.maps.event.addListener(map, 'click', function(event) { addMarker(event.latLng); socket.emit('marker', {'lat': markers[0].position.k, 'long': markers[0].position.D}); socket.emit('show-marker', addMarker); }); } 

 //CLIENT SIDE // Add a marker to the map and push to the array. function addMarker(location) { clearMarkers(); markers = []; var marker = new google.maps.Marker({ position: location, map: map }); markers.push(marker); console.log(location); console.log("marker: " + markers[0].position.k + " " + markers[0].position.D); } 

 //SERVER SIDE socket.on('marker', function(data) { console.log('marker latitude: ' + data.lat + ', marker longitude:' + data.long); }); 

到目前为止,我能够控制login任何玩家点击地图(在客户端和服务器端)的纬度和经度位置。

你想在服务器端使用socket.broadcast.emit('show-marker', data) 。 这将会向所有其他玩家发出'show-marker'事件。 尝试这个:

客户:

 var markers = []; // This event listener will call addMarker() when the map is clicked. google.maps.event.addListener(map, 'click', function(event) { var marker = addMarker(event.latLng); //Notice the spelling of longitude "lng" socket.emit('marker', { 'lat': marker.position.k, 'lng': marker.position.D }); }); // Add a marker to the map and push to the array. function addMarker(location) { var marker = new google.maps.Marker({ position: location, map: map }); markers.push(marker); console.log(location); console.log("marker: " + marker.position.k + " " + marker.position.D); return marker; } //Listen for other players' markers socket.on('show-marker', addMarker); 

服务器:

 io.on('connection', function(socket) { console.log('a user connected'); //Listen for a marker event from a player socket.on('marker', function(data) { console.log('marker latitude: ' + data.lat + ', marker longitude:' + data.lng); //Broadcast marker location to every player except the one who sent it socket.broadcast.emit('show-marker', data); }); });