我尝试创建jvectormap
并使用通过ajax接收的标记填充它。我现在能够将标记放在地图中,但我喜欢根据通过ajax收到的另一个值来改变它们的半径。
$.ajax({
url: "/map",
type: 'post',
dataType: 'json',
data: {
_csrf : 'token'
},
success: function (data) {
var mapObj = new jvm.Map({
container: $('#todaymap'),
map: 'it_merc_en',
normalizeFunction: 'polynomial',
markerStyle: {
initial: {
fill: '#F8E23B',
stroke: '#383f47',
r: 3,
},
hover: {
fill: '#383f47',
stroke: '#383f47'
}
},
backgroundColor: '#383f47',
markers: [],
series: {
markers: [{
attribute: 'r',
scale: [3,10]
}],
}
});
$('#todaymap div:first-child').hide();
var mapMarkers = [];
var mapMarkersValues = [];
mapMarkers.length = 0;
mapMarkersValues.length = 0;
for (var i = 0, l= data.length; i < l; i++) {
coords= Array();
coords[0]= data[i].lat;
coords[1]= data[i].lng;
console.log(data[i].count);
mapMarkers.push({name: data[i].name, latLng: coords});
}
mapObj.addMarkers(mapMarkers, []);
}
});
我想要使用的字段是data[i].count
,根据事件的计数,其值为0到6。我在网上找不到任何有用的东西。任何人都知道如何做到这一点?
答案 0 :(得分:0)
我刚刚在我自己的地图实现上测试的类似方法,但是我的版本设置为更改已经在创建地图时使用的标记,它使用:
mapObj.markers[markerNumber].element.config.style.initial.r = scaleValue;
mapObj.applyTransform();
因此要使用此功能,您必须在mapObj.addMarkers行之后使用数据上的另一个循环添加此项,然后使用applyTransform()在此次循环后使用更改的标记信息重绘/刷新地图,这样我应该想象的工作:
for (var i = 0, l= data.length; i < l; i++) {
mapObj.markers[i].element.config.style.initial.r = data[i].count;
}
mapObj.applyTransform();
编辑:在再次查看您的代码并在创建初始标记时尝试使用某些内容之后,我认为您可以实际将信息添加到mapMarkers数组中,如下所示:
mapMarkers.push({name: data[i].name, latLng: coords, r:data[i].count});