0

是否可以通过这样的网络套接字传递 googlemap?(来自客户)

var mapOptions = {
            center: pathCoordinates[0],
            zoom: 12,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        var gmap = new google.maps.Map(document.getElementById("mapCanvas"), mapOptions);

 $(function(){
     socket.emit('smap', pathCoordinates, data, gmap);
 });

我正在尝试将我的地图传递给服务器端代码,它可以使用它在其上绘制新标记。我目前的设置方式出现此错误:

Uncaught TypeError: Converting circular structure to JSON 
4

1 回答 1

1

当通过 web-sockets 传递对象时,对象被转换为 JSON 字符串。特定错误Converting circular structure to JSON是由于对象gmap包含JSON.stringify不支持的循环引用造成的。

此外,JSON 不支持函数,因此即使您可以将gmap对象传递给服务器,调用gmap.doSomething也不会起作用,因为函数不会被保留。

更好的解决方案是将标记数据传递给客户端,并让客户端将其绘制在地图上:

socket.on('data', function(markerData){
    map.doSomething(markerData);
});
于 2013-11-08T17:32:42.010 回答