Javascript 标记don';不能在地图上显示
我正在尝试将数据从服务器发送到网站,并使用这些数据在聚合物地图上自定义标记。我使用的是socket.io,当我尝试更改标记属性时,我的标记根本不显示 下面是一个代码: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-
<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。我想这可能是数据绑定的问题