如何向所有连接的套接字广播 GoogleMaps 标记?
How can I broadcast a GoogleMaps marker to all connected sockets?
//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);
});
到目前为止,我能够在任何玩家点击地图时(在客户端和服务器端)控制台记录纬度和经度位置。
您想在服务器端使用 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);
});
});
//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);
});
到目前为止,我能够在任何玩家点击地图时(在客户端和服务器端)控制台记录纬度和经度位置。
您想在服务器端使用 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);
});
});