Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 标记don';不能在地图上显示_Javascript_Google Maps_Data Binding_Polymer - Fatal编程技术网

Javascript 标记don';不能在地图上显示

Javascript 标记don';不能在地图上显示,javascript,google-maps,data-binding,polymer,Javascript,Google Maps,Data Binding,Polymer,我正在尝试将数据从服务器发送到网站,并使用这些数据在聚合物地图上自定义标记。我使用的是socket.io,当我尝试更改标记属性时,我的标记根本不显示 下面是一个代码: <dom-module id="main-map"> <template> <style> google-map { display: block; width: 100%; height:100%; } </style> <google-

我正在尝试将数据从服务器发送到网站,并使用这些数据在聚合物地图上自定义标记。我使用的是socket.io,当我尝试更改标记属性时,我的标记根本不显示

下面是一个代码:

<dom-module id="main-map">
<template>
<style>
google-map {
     display: block;
     width: 100%;
     height:100%;
    }
</style>
<google-map map="{{map}}"
 latitude="52.0535631" 
 longitude="19.5249493" 
 zoom="7" 
 disable-default-ui >
      <template is="dom-repeat" items="{{xMarker}}">
           <google-map-marker map={{map}}
            latitude="{{item.latitudine}}"
            longitude="{{item.longitudine}}" 
            animation="{{item.animation}}">
           </google-map-marker>
      </template>
 </google-map>
 </template>
 <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>

Polymer({
    is: 'main-map', 

    properties: {
    xMarker: {
       type: Object,
       value: function () {
           socket.on("asd", function (data) {
                var obj = {};
                obj = [{
                   latitudine: '52.0535631',
                   longitudine: '19.5249493',
                   animation:'BOUNCE',
                }];
                console.log(obj);
                return obj;
               })
                }
            }
        }
    });
    </script>
    </dom-module>

谷歌地图{
显示:块;
宽度:100%;
身高:100%;
}
聚合物({
是‘主地图’,
特性:{
xMarker:{
类型:对象,
值:函数(){
socket.on(“asd”,功能(数据){
var obj={};
obj=[{
latitudine:'52.0535631',
longitudine:'19.52493',
动画:《反弹》,
}];
控制台日志(obj);
返回obj;
})
}
}
}
});

您的
xMarker
属性为空。声明其默认值时没有返回任何内容

Polymer({
  is: 'main-map',

  properties: {
    xMarker: {
      type: Object,
      value: function() {
        socket.on("asd", function(data) {
          var obj = {};
          obj = [{
            latitudine: '52.0535631',
            longitudine: '19.5249493',
            animation: 'BOUNCE',
          }];
          console.log(obj);
          return obj;
        }); 
        // You're not actually returning anything at all. 
      }
    }
  }
});

我可以看出这不起作用的两个原因。首先,
xMarker
被定义为一个对象,但随后用于只接受数组的
dom repeat
。因此,您应该将类型设置为
Array
。除非只有一个标记,否则在这种情况下,请忽略
dom repeat

xMarker: {
   type: Array,
其次,不能通过返回socket.io回调来为其赋值。您可以在
ready
函数中安装socket.io事件处理程序,并将值分配给
xMarker

properties: {
    xMarker: {
      type: Array
    }
},

ready: function() {
    socket.on("asd", function(data) {
        this.xMarker = [{
            latitudine: '52.0535631',
            longitudine: '19.5249493',
            animation: 'BOUNCE',
        }];
    }.bind(this)); 
}

也许我在PolymerJS编写代码的过程中遗漏了一些东西,但是您不需要实例化套接字吗?var socket=io()?sockets工作正常,我在前面定义了socket。我想这可能是数据绑定的问题